React | input radio, checkbox 커스텀 (scss)

샘샘·2023년 8월 7일
0

React

목록 보기
21/28

input의 종류인 radio와 checkbox의 기본 버튼은 안예쁘다. ㅋ

색을 변경하거나 할 수도 있지만 나는 이미지로 기본부터 마우스를 올렸을 때, 선택했을 때를 모두 바꿔주었다


<div className="checkBox">
  <input type="checkbox" id="check1" />
  <div className="checkDefault" />
  <label htmlFor="check1">선택1</label>
</div>

input으로 기본이 되는 checkbox 먼저 만들어 주고
⭐바로 하단에 새로운 div를 추가했다⭐

그리고 설명이 되는 텍스트 label도 입력한다

& .checkBox {
        margin-right: 32px;
        display: flex;
        align-items: center;

        & input[type="checkbox"] {
          display: none;
        }

        & input[type="checkbox"] + .checkDefault {
          display: inline-block;
          width: 16px;
          height: 16px;
          background: url("../static/check_default.png") no-repeat 100%/16px;
        }

        & input[type="checkbox"]:hover + .checkDefault {
          background: url("../static/check_hover.png") no-repeat 100%/16px;
        }

        & input[type="checkbox"]:checked + .checkDefault {
          background: url("../static/check_checked.png") no-repeat 100%/16px;
        }

        & label {
          margin-left: 8px;
        }
      }

여기는 scss부분.
기본 checkbox는 안 예쁘기 때문에 display: none으로 없애준다

그리고 새로 만든 div의 클래스명인 checkDefault를 기본 checkbox에 더해서 원하는 이미지의 경로를 불러와준다

마우스를 올릴 때의 효과인 hover와 체크가 되었을 때인 checked도 똑같이 각자 다른 이미지를 적용해주면 끝!


👉 기본 이미지

👉 선택2에 hover했을 때의 이미지

👉 선택2를 checked했을 때의 이미지

👉 같은 방법으로 선택1은 기본, 선택2에 hover, 선택3에 checked를 각 적용했을 때의 이미지

profile
회계팀 출신 FE개발자 👉콘테크 회사에서 웹개발을 하고 있습니다

0개의 댓글