연습 프로젝트를 진행하던 중에 슬라이더가 필요해서 관련 자료를 찾아보았다.
input
태그에 대해서 공부하고 연습할 때 회원가입, 로그인 등에서 많이 쓰이는 타입인
password, email, text, radio 등에 대해서는 기억하고 있었는데 슬라이더를 만드는 range 타입에 대해서는 잊고 있었다.
<input type="range" min="1" max="100" value="50"/>
기본적으로 input type에 range 값을 주면 위와 같은 회색 슬라이더를 만들 수 있다.
min, max, value는 각각 최솟값, 최댓값, 현재값을 나타낸다
슬라이더의 색상을 바꿔보고 싶어서 일단 color
, background-color
를 지정해 봤다.
<input class="colorChange" type="range"/>
.colorChange {
color : red;
background-color :green;
}
다른 엘리먼트처럼 color
, background-color
를 적용하면 슬라이더 색상이 바뀔 줄 알았는데...
엥? 변화가 없다.
찾아보니 accent-color
속성을 이용하면 된다고 한다.
.colorChange {
accent-color : #DFD3C3;
}
이처럼 적용하면
슬라이더의 색상이 변경된걸 볼 수 있다!
슬라이더 배경색은 슬라이더 색상에 따라 자동으로 보색이 되게 바뀌는것 같다.
기존에는
-webkit-appearance: none
속성을 이용하여 네이티브 설정값을 초기화 해야 색상을 변경할 수 있었지만 색상뿐만 아니라 기본적인 상호작용 등도 전부 없어져서 번거로웠는데
accent-color
속성이 추가되면서 편하게 변경할 수 있다.
단, 테두리나 배경색 등을 완전히 커스텀하고 싶다면appearance
속성을 이용하여 기본값을 전부 밀어버리고 css를 할당해야 한다.
슬라이더의 값을 핸들링하기 위해서는 onChange와 onInput 두가지가 있다.
onChange
는 마우스 커서가 슬라이더에서 떼지는 시점을 기준으로 이벤트를 발생시키고
onInput
은 마우스 커서가 움직일 때마다 이벤트를 발생시킨다.