본문 바로가기
HTML&CSS

CSS로 select 스타일 입히기

by 작업자C 2024. 10. 8.
728x90
<select> 요소는 기본적으로 브라우저마다 다르게 스타일링되기 때문에, CSS로 직접 스타일을 적용해 select 박스의 외관을 커스터마이징할 수 있습니다. 하지만 <select> 요소는 완벽하게 커스터마이징하기 어려운 부분이 있습니다. 기본적인 스타일 변경은 가능하나, 완벽히 통제하려면 JavaScript와 함께 커스텀 UI를 만들어야 합니다.

그래도 CSS로 할 수 있는 몇 가지 방법을 소개합니다.

기본적인 select 스타일링 예시

<div class="select-container">
    <select>
        <option value="apple">사과</option>
        <option value="banana">바나나</option>
        <option value="cherry">체리</option>
        <option value="grape">포도</option>
    </select>
</div>
	/* select 기본 스타일 */
    select {
        width: 200px;
        padding: 10px;
        font-size: 16px;
        border: 2px solid #4CAF50;
        border-radius: 5px;
        background-color: white;
        color: #333;
        appearance: none; /* 브라우저 기본 스타일 제거 */
        -webkit-appearance: none;
        -moz-appearance: none;
        background-image: url('https://upload.wikimedia.org/wikipedia/commons/9/9d/Caret_down_font_awesome_whitevariation.svg'); /* 드롭다운 화살표 커스텀 */
        background-repeat: no-repeat;
        background-position: right 10px center;
        background-size: 15px;
    }

    /* select 요소의 컨테이너에 화살표 추가 */
    .select-container {
        position: relative;
        display: inline-block;
        width: 200px;
    }

    /* 화살표를 select 박스 옆에 배치 */
    .select-container::after {
        content: '\25BC'; /* 아래 화살표 기호 */
        position: absolute;
        top: 50%;
        right: 10px;
        transform: translateY(-50%);
        pointer-events: none;
        font-size: 14px;
        color: #4CAF50;
    }

    /* select 박스가 포커스될 때 스타일 */
    select:focus {
        border-color: #ff5e5e;
        outline: none;
        box-shadow: 0 0 5px rgba(255, 94, 94, 0.5);
    }

    /* 옵션 스타일 */
    option {
        padding: 10px;
    }

설명

  1. 기본 스타일링:
    • width, padding, font-size 등 기본적인 스타일 속성을 사용하여 select 박스의 너비와 내부 간격을 설정합니다.
    • border, border-radius 속성을 사용해 경계선과 둥근 모서리를 설정합니다.
    • appearance: none;을 사용해 브라우저의 기본 화살표 스타일을 제거했습니다.
  2. 커스텀 화살표 추가:
    • background-image 속성을 사용하여 드롭다운 화살표 이미지를 커스텀할 수 있습니다. 위 예시에서는 간단한 SVG 이미지를 사용하여 화살표를 표시했습니다.
    • background-position: right 10px center;는 화살표를 select 박스 안의 오른쪽 끝에 배치합니다.
  3. 컨테이너를 통한 추가 스타일링:
    • .select-container를 사용하여 select 요소를 감싸고, ::after 가상 요소를 통해 화살표 기호(Unicode: \25BC)를 추가했습니다.
    • 화살표는 position: absolute;로 배치하여 select 박스의 오른쪽에 표시됩니다.
  4. 포커스 시 스타일링:
    • 사용자가 select 박스를 클릭하면 border-color가 변경되고, box-shadow가 추가되어 포커스 상태임을 강조합니다.
  5. 옵션 스타일링:
    • option 태그는 기본적으로 스타일을 적용하기 어렵지만, 최소한 padding을 추가하여 옵션 간의 간격을 늘릴 수 있습니다.

요약

  • CSS로 기본적인 select 박스의 스타일을 커스터마이징할 수 있지만, 브라우저마다 기본 스타일이 다를 수 있습니다.
  • appearance: none; 속성을 사용하면 기본 브라우저 스타일을 없앨 수 있으며, 그 후 커스텀 이미지를 배경에 추가하거나 가상 요소를 사용하여 커스텀 화살표를 추가할 수 있습니다.
 
728x90