[CSS] css로 select 요소 꾸미기

6596 단어 CSS

이럴 때

  • select 상자가 간단해 보이기를 바랍니다. 아래와 같습니다.
  • 브라우저의 기본 CSS를 취소하려고 합니다.
  • "▼"를 위해 이미지와 웹 글꼴을 가져오는 것은 지루하다.
  • 코드


    Pug

    .wrap
      form(action="", method="post")
        .selectWrap
          select.select(name="select")
            option(value="1") item1
            option(value="2") item2
            option(value="3") item3
            option(value="4") item4
    

    SCSS

    .wrap {
      display: flex;
      justify-content: center;
      align-items: center;
      height: 500px;
      background-color: #ddd;
    }
    
    .select {
      -webkit-appearance: none;
      -moz-appearance: none;
      appearance: none;
      border: none;
      outline: none;
      background: transparent;
    
      font-size: 30px;
      width: 104px;
    }
    
    .selectWrap {
      position: relative;
      &:after {
        content: '▼';
        position: absolute;
        right: 0px;
        top: 50%;
        transform: translateY(-50%);
        font-size: 20px;
        color: #666;
        pointer-events: none;
      }
    }
    

    해설


    득점

  • 위조원소를 사용한다.텍스트의 "▼"를 사용합니다.

  • select는 위조 원소가 없습니다.외부에서 위조 원소에 사용되는div.selectWrap를 제공합니다.
  • 기본적으로 위조 요소 부분은 클릭에 응답하지 않으므로 응용해야 한다pointer-events: none;.
  • 기존 스타일 취소

    .select {
      -webkit-appearance: none;
      -moz-appearance: none;
      appearance: none;
      border: none;
      outline: none;
      background: transparent;
    
        //略
    }
    

    의심 요소를 더하다

    .selectWrap {
      position: relative;
      &:after {
        content: '▼';
        position: absolute;
        right: 0px;
        top: 50%;
        transform: translateY(-50%);
        font-size: 20px;
        color: #666;
        pointer-events: none;
      }
    }
    
    위조 요소는 select 외부의div로 지정됩니다.absolute에서 select 요소의 범위 내의 정측면에 위치합니다.
    게다가pointer-events: none;▼에 따라 반응한다.

    구현 예


    참고 자료


    CSS로 양식 선택 상자 및 확인란 라디오 단추 장식
    - HTML 태그 참조
    창 요소의 스타일을 초기화합니다.net

    좋은 웹페이지 즐겨찾기