React Slider & Range Slider Overview
React Slider & Range Slider 구성 요소는 트랙을 따라 엄지를 움직여 주어진 범위에서 선택할 수 있게 해줍니다. 트랙은 연속 또는 단계적으로 정의할 수 있으며 단일 및 범위 슬라이더 중에서 선택할 수 있습니다.
React Slider 및 Range Slider 예제
EXAMPLE
TSX
index.css
SliderOverviewStyle.css
import React from 'react' ;
import ReactDOM from 'react-dom/client' ;
import './index.css' ;
import { IgrSlider, IgrRangeSlider } from "@infragistics/igniteui-react" ;
import 'igniteui-webcomponents/themes/light/bootstrap.css' ;
import './SliderOverviewStyle.css' ;
export default function SliderOverview() {
return (
<div className ="container sample" >
<div className ="slider-component" >
<span className ="slider-label" > Slider</span >
<IgrSlider value ={40} />
<span className ="slider-label" > Range Slider</span >
<IgrRangeSlider lower ={20} upper ={70} > </IgrRangeSlider >
</div >
</div >
);
}
const root = ReactDOM.createRoot (document.getElementById('root' ));
root.render (<SliderOverview /> );
tsx コピー igc-slider,
igc-range-slider {
padding : 30px 30px 0px 30px ;
flex-grow : 1 ;
}
.slider-container {
display : flex;
align-items : baseline;
}
.slider-label {
width : 100px ;
text-align : end;
}
css コピー
이 샘플이 마음에 드시나요? Ignite UI for React 전체에 액세스하고 몇 분 만에 나만의 앱을 빌드하기 시작하세요. 무료로 다운로드하세요.
용법
먼저, 다음 명령을 실행하여 Ignite UI for React 설치해야 합니다.
npm install igniteui-react
cmd
그런 다음 다음과 같이 and IgrRangeSlider
와 필요한 CSS를 가져와야 IgrSlider
합니다.
import { IgrSlider, IgrRangeSlider } from 'igniteui-react' ;
import 'igniteui-webcomponents/themes/light/bootstrap.css' ;
tsx
<IgrSlider value ="40" />
<span className ="slider-label" > </span >
<IgrRangeSlider lower ="20" upper ="70" > </IgrRangeSlider >
tsx
값
Slider 구성 요소와 Range Slider 구성 요소의 주요 차이점은 Slider 구성 요소에는 엄지 손가락이 하나 있고 Range Slider 구성 요소에는 엄지 손가락이 두 개 있다는 것입니다. Slider 구성 요소의 단일 썸은 해당 value
속성을 표시합니다. Range Slider 구성 요소의 두 엄지손가락에는 lower
및 upper
속성이 표시됩니다.
두 슬라이더 모두 값 중 하나라도 변경될 때 두 개의 이벤트를 발생시킵니다. IgrInput
이 이벤트는 키보드 또는 드래그 상호 작용을 사용하여 값이 변경될 때마다 발생하며, Change
드래그 끝 또는 키보드 상호 작용에서 값 변경이 커밋될 때 이벤트가 발생합니다.
import React , { useState } from "react" ;
import ReactDOM from "react-dom/client" ;
import "./index.css" ;
import { IgrSlider, IgrRangeSlider } from "@infragistics/igniteui-react" ;
import "igniteui-webcomponents/themes/light/bootstrap.css" ;
export default function SliderValue() {
const [sliderVal , setSliderVal ] = useState(40 );
const [rangeLower , setRangeLower ] = useState(20 );
const [rangeUpper , setRangeUpper ] = useState(70 );
const handleSliderInput = (event: any ) => {
setSliderVal(event.detail);
};
const handleRangeInput = (event: any ) => {
const { lower , upper } = event.detail;
setRangeLower(lower);
setRangeUpper(upper);
};
return (
<div className ="container sample" >
<div className ="slider-component" >
<IgrSlider
style ={{ padding: "30px 30px 0px 30px " }}
onInput ={handleSliderInput}
value ={sliderVal}
/>
<div style ={{ paddingLeft: "30px ", display: "flex " }}>
<span style ={{ whiteSpace: "pre " }}> Value: {sliderVal}</span >
</div >
<IgrRangeSlider
style ={{ padding: "30px 30px 0px 30px " }}
onInput ={handleRangeInput}
lower ={rangeLower}
upper ={rangeUpper}
> </IgrRangeSlider >
<div style ={{ paddingLeft: "30px ", display: "flex " }}>
<span style ={{ whiteSpace: "pre " }}> Lower: {rangeLower}</span >
<span style ={{ whiteSpace: "pre " }}> , Upper: {rangeUpper}</span >
</div >
</div >
</div >
);
}
const root = ReactDOM.createRoot (document.getElementById("root" ));
root.render (<SliderValue /> );
tsx コピー
슬라이더 썸을 드래그하는 동안 도구 설명에 해당 값이 표시됩니다. hideTooltip
속성을 사용하여 이 도구 설명을 숨길 수 있습니다.
장애가 있는
슬라이더의 disabled
속성을 사용하여 사용자 상호 작용을 비활성화할 수 있습니다.
EXAMPLE
TSX
index.css
SliderDisabledStyle.css
import React from 'react' ;
import ReactDOM from 'react-dom/client' ;
import './index.css' ;
import { IgrSlider } from "@infragistics/igniteui-react" ;
import 'igniteui-webcomponents/themes/light/bootstrap.css' ;
import './SliderDisabledStyle.css' ;
export default function SliderDisabled() {
return (
<div className ="container sample" >
<IgrSlider value ={40} disabled ={true}/ >
</div >
);
}
const root = ReactDOM.createRoot (document.getElementById('root' ));
root.render (<SliderDisabled /> );
tsx コピー igc-slider {
padding : 30px 30px 0px 30px ;
}
css コピー
제약
슬라이더의 트랙에는 min
및 max
속성을 사용하여 구성되는 최소값과 최대값이 있습니다. 또한 lowerBound
및 upperBound
속성을 사용하여 썸 드래그를 제한할 수 있습니다.
EXAMPLE
TSX
index.css
SliderConstraintsStyle.css
import React from 'react' ;
import ReactDOM from 'react-dom/client' ;
import './index.css' ;
import { IgrSlider } from "@infragistics/igniteui-react" ;
import 'igniteui-webcomponents/themes/light/bootstrap.css' ;
import './SliderConstraintsStyle.css' ;
export default function SliderConstraints() {
return (
<div className ="container sample" >
<IgrSlider max ={1000} min ={100} lowerBound ={200} upperBound ={800} value ={400} primaryTicks ={2}/ >
</div >
);
}
const root = ReactDOM.createRoot (document.getElementById('root' ));
root.render (<SliderConstraints /> );
tsx コピー igc-slider {
padding : 30px 30px 0px 30px ;
}
css コピー
단계
step
속성은 값이 준수해야 하는 슬라이더의 세분성을 지정합니다. 기본적으로 슬라이더 트랙은 연속적으로 보입니다. 슬라이더의 discreteTrack
속성을 true 로 설정하면 트랙에 단계가 표시됩니다.
EXAMPLE
TSX
index.css
SliderDiscreteStyle.css
import React from 'react' ;
import ReactDOM from 'react-dom/client' ;
import './index.css' ;
import { IgrSlider } from "@infragistics/igniteui-react" ;
import 'igniteui-webcomponents/themes/light/bootstrap.css' ;
import './SliderDiscreteStyle.css' ;
export default function SliderDiscrete() {
return (
<div className ="container sample" >
<IgrSlider step ={10} discreteTrack ={true}/ >
</div >
);
}
const root = ReactDOM.createRoot (document.getElementById('root' ));
root.render (<SliderDiscrete /> );
tsx コピー igc-slider {
padding : 30px 30px 0px 30px ;
}
css コピー
step
속성이 0
으로 설정되면 단계별 실행이 암시되지 않으며 슬라이더 범위의 모든 값이 허용됩니다. 이 경우, discreteTrack
true 로 설정되어 있어도 슬라이더는 연속적으로 보입니다.
눈금 표시
슬라이더 구성 요소에는 눈금 표시와 레이블이 표시될 수 있습니다. 슬라이더 구성 요소는 기본 및 보조라는 두 가지 유형의 눈금 표시를 지원합니다. 기본 눈금 표시를 표시하려면 primaryTicks
속성을 1
보다 큰 값으로 설정해야 합니다. 기본 틱 수는 트랙에 고르게 분포됩니다. 보조 눈금 표시를 표시하려면 secondaryTicks
속성을 0
보다 큰 값으로 설정해야 합니다. secondaryTicks
값은 두 개의 기본 틱 사이의 보조 틱 수를 지정합니다.
import React from 'react' ;
import ReactDOM from 'react-dom/client' ;
import './index.css' ;
import { IgrSlider } from "@infragistics/igniteui-react" ;
import 'igniteui-webcomponents/themes/light/bootstrap.css' ;
export default function SliderTicks() {
return (
<div className ="container sample" >
<IgrSlider style ={{padding: "30px 30px 0px 30px "}}
primaryTicks ={3}
secondaryTicks ={4} />
</div >
);
}
const root = ReactDOM.createRoot (document.getElementById('root' ));
root.render (<SliderTicks /> );
tsx コピー
또한, tickOrientation
속성을 사용하여 눈금 표시의 방향을 구성할 수 있습니다. 기본적으로 tickOrientation
값은 슬라이더 트랙 아래에 틱을 표시하는 end
입니다. 트랙 위에 표시되는 start
과 트랙 위와 아래의 틱을 미러링하는 mirror
설정할 수 있습니다.
기본적으로 눈금 표시에는 해당 값과 함께 레이블이 표시됩니다. tickLabelRotation
속성을 사용하여 눈금 레이블의 회전을 수정할 수 있습니다. 또한 hidePrimaryLabels
및 hideSecondaryLabels
속성을 사용하여 기본 및 보조 틱의 레이블을 숨길 수 있습니다.
import React from 'react' ;
import ReactDOM from 'react-dom/client' ;
import './index.css' ;
import { IgrSlider } from "@infragistics/igniteui-react" ;
import 'igniteui-webcomponents/themes/light/bootstrap.css' ;
export default function SliderTickLabels() {
return (
<div className ="container sample" >
<IgrSlider style ={{padding: "30px 30px 0px 30px "}}
primaryTicks ={6}
secondaryTicks ={1}
tickOrientation ="mirror"
tickLabelRotation ={-90}
hideSecondaryLabels ={true} >
</IgrSlider >
</div >
);
}
const root = ReactDOM.createRoot (document.getElementById('root' ));
root.render (<SliderTickLabels /> );
tsx コピー
썸 및 눈금 레이블 값의 형식을 지정하려는 경우 슬라이더는 valueFormat
, valueFormatOptions
및 locale
속성을 제공합니다. valueFormatOptions
사용하면 지정된 로케일을 고려하여 분수 및 유효 자릿수, 스타일(십진수, 통화, 백분율, 단위), 표기법 및 기타 locale
을 지정할 수 있습니다. valueFormat
은 적용된 형식 옵션이 있는 값으로 대체될 {0}
식별자를 포함할 수 있는 문자열입니다.
import React from 'react' ;
import ReactDOM from 'react-dom/client' ;
import './index.css' ;
import { IgrSlider, NumberFormatOptions } from "@infragistics/igniteui-react" ;
import 'igniteui-webcomponents/themes/light/bootstrap.css' ;
export default function SliderValueFormat() {
const formatOptions1 : NumberFormatOptions = {
style: "currency" ,
currency: "USD"
};
const formatOptions2 = { minimumFractionDigits: 1 };
return (
<div className ="container sample" >
<IgrSlider
style ={{padding: "30px 50px "}}
primaryTicks ={2}
secondaryTicks ={4}
valueFormatOptions ={formatOptions1} >
</IgrSlider >
<IgrSlider
style ={{padding: "30px 50px "}}
valueFormat ="Storage {0} GB"
valueFormatOptions ={formatOptions2} >
</IgrSlider >
</div >
);
}
const root = ReactDOM.createRoot (document.getElementById('root' ));
root.render (<SliderValueFormat /> );
tsx コピー
레이블
어떤 경우에는 슬라이더 값을 문자열 값으로 형식화하려는 경우가 있습니다. 즉, [0, 1, 2] 값을 ['Low', 'Medium', 'High'] 에 매핑합니다. 이 시나리오에서는 슬라이더를 사용하여 내부에 IgrSliderLabel
요소를 정의할 수 있습니다. 슬라이더 레이블의 텍스트 내용은 썸 및 눈금 레이블에 사용됩니다. 슬라이더 레이블이 제공되면 제공된 레이블에 매핑되지 않는 값을 허용하지 않도록 min
, max
및 step
속성이 자동으로 계산됩니다. 'Low', 'Medium', 'High' 라벨의 경우 min
은 0
, max
는 2
, step
은 1
로 설정됩니다.
EXAMPLE
TSX
index.css
SliderLabelsStyle.css
import React from 'react' ;
import ReactDOM from 'react-dom/client' ;
import './index.css' ;
import { IgrSlider, IgrSliderLabel } from "@infragistics/igniteui-react" ;
import 'igniteui-webcomponents/themes/light/bootstrap.css' ;
import './SliderLabelsStyle.css' ;
export default function SliderLabels() {
return (
<div className ="container sample" >
<IgrSlider primaryTicks ={3} >
<IgrSliderLabel > <span > Low</span > </IgrSliderLabel >
<IgrSliderLabel > <span > Medium</span > </IgrSliderLabel >
<IgrSliderLabel > <span > High</span > </IgrSliderLabel >
</IgrSlider >
</div >
);
}
const root = ReactDOM.createRoot (document.getElementById('root' ));
root.render (<SliderLabels /> );
tsx コピー igc-slider {
padding : 30px 30px 0px 30px ;
width : 300px ;
}
css コピー
스타일링
구성 요소는 IgrSlider
거의 모든 내부 요소에 대한 CSS 부분을 노출합니다. 다음 표에는 노출된 모든 CSS 부분이 나열되어 있습니다.
이름
설명
base
슬라이더의 기본 래퍼입니다.
ticks
진드기 컨테이너입니다.
tick-group
진드기 그룹 컨테이너입니다.
tick
눈금 요소입니다.
tick-label
눈금 레이블 요소입니다.
tick-label-inner
눈금 레이블의 내부 요소입니다.
thumbs
엄지손가락 컨테이너입니다.
thumb
엄지손가락 요소입니다.
thumb-label
엄지손가락 도구 설명의 레이블 컨테이너입니다.
thumb-label-inner
엄지손가락 도구 설명의 레이블 요소입니다.
track
트랙 컨테이너.
steps
트랙 단계 요소입니다.
inactive
트랙의 비활성 요소입니다.
fill
트랙의 채워진 부분.
다음 샘플은 트랙 채우기 및 썸 부분의 스타일을 지정하는 방법을 보여줍니다.
EXAMPLE
TSX
index.css
SliderStyling.css
import React from 'react' ;
import ReactDOM from 'react-dom/client' ;
import './index.css' ;
import { IgrSlider, IgrRangeSlider } from "@infragistics/igniteui-react" ;
import 'igniteui-webcomponents/themes/light/bootstrap.css' ;
import './SliderStyling.css' ;
export default function SliderStyling() {
return (
<div className ="container sample" >
<div className ="slider-container" >
<span className ="slider-label" > Slider</span >
<IgrSlider value ={40}/ >
</div >
<div className ="slider-container" >
<span className ="slider-label" > Range Slider</span >
<IgrRangeSlider lower ={20} upper ={70} >
</IgrRangeSlider >
</div >
</div >
);
}
const root = ReactDOM.createRoot (document.getElementById('root' ));
root.render (<SliderStyling /> );
tsx コピー igc-slider {
padding : 30px 30px 0px 30px ;
}
igc-range-slider {
padding : 30px 30px 0px 30px ;
}
igc-slider::part (thumb) {
background : #28a745 ;
}
igc-slider::part (thumb):focus {
background : #28a745 ;
box-shadow : 0 0 0 2px #28a746 94;
}
igc-slider::part (fill) {
display : block;
background : #28a745 ;
}
igc-range-slider::part (thumb) {
background : orange;
}
igc-range-slider::part (thumb):focus {
background : navy;
box-shadow : 0 0 0 2px orange;
}
igc-range-slider::part (track) {
display : block;
background : navy;
}
igc-range-slider::part (thumb-label -inner) {
background : navy;
}
css コピー
API 참조
추가 리소스