Chrome / Webkit의 <select> 요소에서 둥근 모서리 제거


143

Chrome 용 사용자 에이전트 스타일 시트는 <select>요소 의 모든 모서리에 5px의 경계 반경을 제공합니다 . 외부 스타일 시트를 통해 반경 0px를 적용하고 요소 자체에 인라인을 적용하여이를 제거하려고 시도했습니다. 난 둘 다 해봤 border-radius:0px-webkit-border-radius:0px;와 나는 더 구체적인 노력했습니다 border-top-left-radius:0px(그것의 -webkit 동등한와 함께)를.

아무것도 작동하지 않습니다.

웹킷의 개발자 도구에서 요소를 검사 할 때 컴퓨팅 스타일에는 여전히 반경이 5px로 표시됩니다. 그러나 옆에있는 확장 화살표를 클릭하면 자세한 내용을 볼 수 있습니다 : element.style-0px. 그리고 그 아래에는 5px의 사용자 에이전트 스타일 시트 사양과 함께 0px의 외부 CSS 사양이 나와 있습니다. 그리고 후자 둘 다 필요에 따라 제거됩니다.

어떤 아이디어?


코드를 게시 할 수 있습니까? jsfiddle.net을 사용하여 게시하면 더 좋습니다.
ngen

1
Win7의 Chrome 10에서 기본 스타일로 테두리 반경이 실제로 없습니다. 아마도 다른 버전입니까? OS입니까?
웨슬리 머치

Windows 7의 Chrome 12에도 둥근 모서리가 없습니다.
andyb

1
맥 오에스텐에 있다고 언급 했어야한다.
maxedison

답변:


244

이것은 나를 위해 작동합니다 (드롭 다운 목록이 아닌 첫 번째 모양의 스타일).

select {
  -webkit-appearance: none;
  -webkit-border-radius: 0px;
}

http://jsfiddle.net/fMuPt/


179
둥근 모서리를 제거하지만 화살표를 오른쪽에 유지하는 방법은 무엇입니까?
Adam

3
예를 들어 위치가 100 % 50 %이고 반복이없는 속성을 가진 배경 이미지와 같은 화살표를 추가해야합니다. 또한 추가 http 요청을 피하기 위해 CSS에서 base64로 인코딩 된 이미지를 사용했습니다.
Karl Adler

26
@Adam 당신이 다음 border: 0과 같은 개요 를 사용 하고 추가 하면 그것은 나를 위해 일했다 :outline: 1px inset black; outline-offset:-1px
Filipe Pereira

1
@FilipePereira Nice IE가 지원하지 않는 개요 오프셋을 추가해야하지만 좋아합니다.
Tim

6
이렇게하면 오른쪽의 화살표가 제거되어 사용자 경험을 용인 할 수없는 수준으로 손상시킵니다. 대신, 스타일 드롭 다운 background-color: #yourbgborder-style: none다음 직접와 드롭하기 전에 사업부를 작성 position: absolute하고 border-bottom: 1px solid #youpickdisplay: inline. 화살표는 보존되었고 UX는 무사하고 개선되었습니다.
devigner

90

드롭 다운 이미지가있는 내 솔루션 (inline svg)

select.form-control {
    -webkit-appearance: none;
    -webkit-border-radius: 0px;
    background-image: url("data:image/svg+xml;utf8,<svg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' width='24' height='24' viewBox='0 0 24 24'><path fill='%23444' d='M7.406 7.828l4.594 4.594 4.594-4.594 1.406 1.406-6 6-6-6z'></path></svg>");
    background-position: 100% 50%;
    background-repeat: no-repeat;
}

부트 스트랩을 사용하고 있기 때문에 select.form-control
사용 select{하거나 select.your-custom-class{대신 사용할 수 있습니다 .


4
svg의 채우기 색상이 입력에 설정 한 배경색을 덮어 쓰므로 배경 대 배경 이미지를 사용하는 것이 중요하지만 이것은 내 문제를 해결 한 유일한 대답입니다.
Lucas M

동의,이 답변을 투표하십시오! 불완전한 답변에 대한 다른 투표를 이해하지 못합니다. 인라인 svg 대신 fontawesome 아이콘을 사용하는 조언이 있습니까?
니콜라스 테리

FontAwesome은 아이콘 모음이지만 하나의 아이콘 만 필요합니다. 따라서 icomoon.io와 같은 도구를 사용하여 FA 아이콘 중 하나를 추출해야합니다. 그런 다음 해당 아이콘을 svg 또는 png 파일로 내 보낸 다음 CSS에서 링크하십시오
Afzal Hossain

좋은 해결책이지만 내 상황에서 background-color : 흰색을 추가했습니다.
Viktor Bogutskii

그러나을 설정 width: auto;하면 추가 된 svg 화살표가 선택 내용을 오버레이합니다. 16px의 오른쪽에 추가 패딩이 필요합니다. 그러나이 패딩은 모든 브라우저에서 볼 수 있으므로 다른 브라우저에서 디자인이 깨집니다. 아직 해결책이 없습니다 ...
Klaas van der Weij

31

사각형 테두리를 원하고 작은 확장 화살표를 원한다면 다음을 권장합니다.

select.squarecorners{
     border: 0;
     outline: 1px solid #CCC;
     background-color: white;
}

2
이것의 문제점은 outlineon 의 기본값 을 무시한다는 것입니다 :focus. 이 대답을 사용하려는 경우, 당신은 해야 당신의 변화 select:focus를 시각적으로 보여 스타일을 select요소가 활성 또는됩니다 :focus클릭에, 에드.
Devin McInnis

@ jordan314 이 사진둥근 모서리를 확인하십시오 . 경계 반경 : 0; select 태그에는 영향을 미치지 않습니다. 어쨌든 적어도 Chrome OSX에서는.
Jammer

1
이상한 @ 7immy, 내가 여기에 크롬 OS X에도있어하고는 바이올린 위의 스크린 샷이다 imgur.com/r6ce6Yv
jordan314

1
@ jordan314 어때요? jsfiddle.net/78xa6qud/2 . 선택의 배경과 배경의 배경이 같은 색상이면 벗어날 수 있다고 생각합니다.
Jammer

@ 7immy 아 그래, 그 경고는 추측이다.
jordan314

7

여기에 좋은 해결책이 있지만 SVG가 필요하지 않고 경계를 유지 outline하고 버튼에 플러시합니다.

select {
  height: 20px;
  -webkit-border-radius: 0;
  border: 0;
  outline: 1px solid #ccc;
  outline-offset: -1px;
}
<select>
 <option>Apple</option>
 <option>Ball</option>
 <option>Cat</option>
</select>


6

상단 답변은 테두리를 제거하지만 화살표도 제거하므로 사용자가 요소를 선택 항목으로 식별하는 것이 불가능하지는 않지만 매우 어려워집니다.

내 솔루션은 선택 뒤에 흰색 div (국경-반경 : 0px)를 붙이는 것입니다. 위치를 절대로, 높이를 선택의 높이로 설정하면 잘 갈 수 있습니다!


4

맞춤 오른쪽 드롭 다운 화살표가있는 솔루션, CSS 만 사용 (이미지 없음)

select {
  -webkit-appearance: none;
  -webkit-border-radius: 0px;
  background-image: linear-gradient(45deg, transparent 50%, gray 50%), linear-gradient(135deg, gray 50%, transparent 50%);
  background-position: calc(100% - 20px) calc(1em + 2px), calc(100% - 15px) calc(1em + 2px), calc(100% - 2.5em) 0.5em;
  background-size: 5px 5px, 5px 5px, 1px 1.5em;
  background-repeat: no-repeat;

  -moz-appearance: none;
  display: block;
  padding: 0.3rem;
  height: 2rem;
  width: 100%;
}
<html>

<body>
  <br/>
  <h4>Example</h4>
  <select>
    <option></option>
    <option>Hello</option>
    <option>World</option>
  </select>
</body>

</html>


내 요구에 더 잘 맞는 배경 위치는 다음과 같습니다. background-position: calc(100% - 4px) center, 100% center;화살표가 선택의 중간으로 이동하고 오른쪽으로 이동합니다. 위대한 시작에 감사드립니다!
브랜든

3

간단하게 유지하고 화살표와 같은 기능을 사용하지 않는 한 가지 방법은 select 태그와 동일한 배경색으로 div에 저장하는 것입니다.


1
나는 이것이 가장 단순하고 가장 신뢰할 수 있고 휴대 가능한 솔루션이라는 데 동의합니다.
John Henckel

1

화살표를 제거하지 마십시오. 드롭 다운 화살표를 유지하는 솔루션은 먼저 드롭 다운에서 스타일을 제거하는 것입니다.

.myDropdown {
  background-color: #yourbg;
  border-style: none;
}

그런 다음 HTML 드롭 다운 바로 앞에 div를 만듭니다.

<div class="myDiv"></div>
<select class="myDropdown...">...</select>

그리고 다음과 같이 div 스타일을 지정하십시오.

.myDiv {
  background-color: #yourbg;
  border-style: none;
  position: absolute;
  display: inline;
  border: 1px solid #acolor;
}

인라인 표시는 div가 새 줄로 이동하지 못하게하고 절대 위치는 페이지 흐름에서 div를 제거합니다. 최종 결과는 원하는대로 스타일을 지정할 수있는 깔끔한 밑줄이며, 드롭 다운은 사용자가 원하는대로 동작합니다.


1

삽입 상자 그림자는 트릭을 수행합니다.

select{
  -webkit-appearance: none;
  box-shadow: inset 0px 0px 0px 4px;
  border-radius: 0px;
  border: none;
  padding:20px 150px 20px 10px;
}

데모


0

어떤 이유로 국경의 색상에 실제로 영향을 받습니까? 표준 색상을 사용하면 모서리가 둥글게 유지되지만 색상을 약간 변경해도 반올림이 사라집니다.

select.regularcolor {
    border-color: rgb(169, 169, 169);
}

select.offcolor {
    border-color: rgb(170, 170, 170);
}

https://jsfiddle.net/hLg70o70/2/


흠 OSX에 대해 잘 모르겠습니다. Windows (Chrome 버전 45.0)에서 다시 시도했지만 여전히 작동합니다. 문제를 플랫폼에 따라 더욱 이상하게 생각합니다 ...
mcallahan

테두리를 설정하면 브라우저가 OS에서 제공하는 기본 콤보 상자를 사용하지 않고 콤보 상자 자체를 렌더링하기 때문입니다.
Kong

0

잘 나는 해결책을 얻었다. 그것이 당신을 도울 수 있기를 바랍니다 :)

select{
      border-image: url(http://www.w3schools.com/cssref/border.png) 30 stretch;
      width: 120px;
      height: 36px;
      color: #999;
  }
<select>
  <option value="1">Hi</option>
  <option value="2">Bye</option>
</select>


0

다음과 같은 방법이 있습니다.

  1. 드롭 다운처럼 보이는 배경 이미지를 만듭니다.
  2. 브라우저 모양 끄기
  3. 선택한 구성 요소의 배경 이미지 정렬
  .control select {  
    border-radius: 0px;
    appearance: none;
    -webkit-appearance: none;
    -moz-appearance: none;
    background-image: url("<your image>");
    background-repeat: no-repeat;
    background-position: 100%;
    background-size: 20px;
  }

-1

jordan314의 솔루션을 사용했지만 "border-light"클래스를 추가했습니다. CSS에 기본 보더 라이트 클래스가 정의되어 있으면 직접 사용할 수 있습니다. 테두리를 흰색으로 정의합니다). 테두리를 사각형으로 변경하고 반경을 제거하고 화살표를 유지했습니다.

여기 내가 한 일이 있습니다.

<select class="form-control border border-light" id="type">
   <option>Select</option>
   <option value="mobile">Apple</option>
 </select>

사전 정의 된 보더 라이트가없는 경우 CSS를 추가하십시오.

<style>
.border-light{
         border-color:#f8f9fa!important
     }

 #type {
   border:0;
   outline:1px solid #ddd;
   background-color:white;
 }
</style>


-10

CSS를 다음과 같이 설정하십시오.

border-radius:0px !important
-webkit-border-radius:0px !important
border-top-left-radius:0px !important

작동하는지보십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.