Computer >> 컴퓨터 >  >> 프로그래밍 >> CSS

CSS appearance 속성을 활용한 사용자 정의 체크박스 만들기

CSS의 appearance 속성은 요소를 사용자 운영체제(OS)의 기본 네이티브 스타일에 맞춰 표시하거나, 반대로 기본 스타일을 제거하여 완전히 새로운 디자인을 적용할 수 있게 해주는 강력한 도구입니다. 이 속성을 활용하면 브라우저가 제공하는 기본 체크박스 모양을 없애고 자신만의 개성적인 체크박스를 손쉽게 만들 수 있습니다.

문법(Syntax)

CSS appearance 속성의 기본 문법은 다음과 같습니다.

Selector {
   appearance: /*값*/;
   -webkit-appearance: /*값*/; /* Safari 및 Chrome 전용 */
   -moz-appearance: /*값*/; /* Firefox 전용 */
}

크로스 브라우저 호환성을 위해 표준 속성인 appearance와 함께 벤더 접두사인 -webkit-appearance, -moz-appearance를 함께 작성하는 것이 좋습니다.

예제 1: 원형 커스텀 체크박스

다음 예제는 appearance 속성을 사용하여 기본 체크박스의 모양을 제거하고, 원형 디자인과 그림자 효과가 적용된 사용자 정의 체크박스를 구현한 것입니다.

<!DOCTYPE html>
<html>
   <style>
      input[type=checkbox] {
         appearance: none;
         -webkit-appearance: none;
         -moz-appearance: none;
         padding: 12px;
         background-color: cyan;
         box-shadow: inset 0 3px 3px 5px lightgreen;
         border-radius:50%;
      }
      input[type=checkbox]:checked {
         background-color: coral;
         border: 6px solid cornflowerblue;
         box-shadow: 0 1px 2px lightorange;
      }
      input[type=checkbox]:checked:after {
         content:"Checked";
      }
   </style>
<body>
   <input type="checkbox"> Custom Checkbox Example
</body>
</html>

위 코드를 실행하면 다음과 같은 결과가 출력됩니다.

CSS appearance 속성을 활용한 사용자 정의 체크박스 만들기

CSS appearance 속성을 활용한 사용자 정의 체크박스 만들기

이 예제에서 appearance: none으로 기본 체크박스 스타일을 제거한 후, border-radius: 50%로 원형 모양을 만들고 배경색과 내부 그림자(inset box-shadow)를 조합해 입체감을 더했습니다. 또한 :checked 가상 클래스를 활용해 체크 상태일 때 배경색, 테두리, 텍스트가 변경되도록 설정했습니다.

예제 2: 체크 마크(✓)가 표시되는 커스텀 체크박스

다음 예제는 체크 시 유니코드 문자를 활용해 체크 마크가 나타나는 스타일의 사용자 정의 체크박스입니다.

<!DOCTYPE html>
<html>
   <style>
      input[type=checkbox] {
         appearance: none;
         -webkit-appearance: none;
         -moz-appearance: none;
         padding: 10px;
         background-color: cyan;
         border-radius:5%;
      }
      input[type=checkbox]:checked {
         background-color: magenta;
      }
      input[type=checkbox]:checked:before {
         content:"\2713";
         color: white;
         padding: initial;
         font-weight: bold;
      }
   </style>
<body>
   <input type="checkbox"> Another Custom Checkbox Example
</body>
</html>

위 코드를 실행하면 다음과 같은 결과가 출력됩니다.

CSS appearance 속성을 활용한 사용자 정의 체크박스 만들기

CSS appearance 속성을 활용한 사용자 정의 체크박스 만들기

여기서는 :before 가상 요소의 content 속성에 유니코드 값 \2713(체크 마크 ✓)을 지정하여, 체크박스가 선택되었을 때 흰색 굵은 글씨의 체크 표시가 나타나도록 했습니다.

정리

appearance 속성을 none으로 설정하면 브라우저 및 운영체제의 기본 UI 스타일이 제거되므로, 배경색, 테두리, 그림자, 가상 요소 등 다양한 CSS 기법을 자유롭게 조합해 디자인할 수 있습니다. 이처럼 CSS만으로도 JavaScript 없이 세련된 사용자 정의 체크박스를 구현할 수 있습니다.