부트 스트랩 3의 선택 태그에서 경계 반경 제거


133

이것은 사소한 문제처럼 보이지만 알아낼 수는 없습니다.

Bootstraps 자체 웹 사이트에는 Select 예제가 있습니다.

부트 스트랩 선택



코드를 보면 해당 선택 요소에 테두리 반경이 4 인 것처럼 보입니다. 여기에 이미지 설명을 입력하십시오



테두리 반경을 0으로 변경하면 선택 요소에서 테두리 반경이 제거되지만 아래 그림과 같이 그렇지 않습니다.

여기에 이미지 설명을 입력하십시오



선택 요소를 변경하는 모든 CSS를 살펴 보았지만 테두리 반경을 제거하지 않는 것 같습니다.


1
.form-control수업 에서 테두리 반경을 변경하면 나에게 잘 작동합니다. bootply.com/Q7goAsFc0B
j08691

1
귀하의 예에서도 해당 선택 요소에 둥근 모서리가 있습니다 ...?
Tyler McGinnis 2016 년

2
Chrome에 문제가 있음이 밝혀졌습니다. 파이어 폭스에서 bootply를 열면 반올림되지 않습니다. 기묘한.
Tyler McGinnis 2016 년

Chrome과 FF에서 모두 작동합니다.
j08691 2016 년

1
나를 위해 그것은 크롬에서 작동하지 않지만 파이어 폭스에서 잘 작동합니다
매버릭

답변:


256

다음은 모든 최신 브라우저에서 작동하는 버전입니다. 키를 사용 appearance:none하여 기본 서식을 제거합니다. 모든 서식이 사라 졌으므로 선택 항목과 입력 내용을 시각적으로 구분하는 화살표를 다시 추가해야합니다. 참고 : appearanceIE에서는 지원되지 않습니다 .

실제 예 : https://jsfiddle.net/gs2q1c7p/

select:not([multiple]) {
    -webkit-appearance: none;
    -moz-appearance: none;
    background-position: right 50%;
    background-repeat: no-repeat;
    background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAMCAYAAABSgIzaAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NDZFNDEwNjlGNzFEMTFFMkJEQ0VDRTM1N0RCMzMyMkIiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NDZFNDEwNkFGNzFEMTFFMkJEQ0VDRTM1N0RCMzMyMkIiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo0NkU0MTA2N0Y3MUQxMUUyQkRDRUNFMzU3REIzMzIyQiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo0NkU0MTA2OEY3MUQxMUUyQkRDRUNFMzU3REIzMzIyQiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PuGsgwQAAAA5SURBVHjaYvz//z8DOYCJgUxAf42MQIzTk0D/M+KzkRGPoQSdykiKJrBGpOhgJFYTWNEIiEeAAAMAzNENEOH+do8AAAAASUVORK5CYII=);
    padding: .5em;
    padding-right: 1.5em
}

#mySelect {
    border-radius: 0
}
<select id="mySelect">
    <option>Option 1</option>
    <option>Option 2</option>
</select>

를 기반으로 아르노 Tenkink의 코멘트에 제안, 여기를 사용하는 예입니다 대신에 화살표 아이콘.

select:not([multiple]) {
    -webkit-appearance: none;
    -moz-appearance: none;
    background-position: right 50%;
    background-repeat: no-repeat;
    background-image: url('data:image/svg+xml;utf8,<?xml version="1.0" encoding="utf-8"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg xmlns="http://www.w3.org/2000/svg" width="14" height="12" version="1"><path d="M4 8L0 4h8z"/></svg>');
    padding: .5em;
    padding-right: 1.5em
}

#mySelect {
    border-radius: 0
}
<select id="mySelect">
    <option>Option 1</option>
    <option>Option 2</option>
</select>


26
이것이 실제 답변이되어야합니다.
avoliva

1
이것은 선택된 하나보다 더 나은 답변입니다
크리스 제임스 Champeau

7
이를 위해 SVG를 사용할 수도 있습니다. <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> <svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="14px" height="12px" viewBox="0 0 14 12" enable-background="new 0 0 14 12" xml:space="preserve"> <polygon points="3.862,7.931 0,4.069 7.725,4.069 "/></svg>동일한 파일 공간을 절약합니다. 또한 캐시 가능하고 유지 관리가 쉽습니다. 이것을 파일로 복사하고 .svg로 저장하고 배경으로 사용하십시오.
Arno Tenkink

1
이것이 답입니다.
콘래드 워홀

2
이것이 가장 좋은 대답입니다. 이 작업을 몇 번 수행하는 방법을 찾았습니다. 많은 도움이 될 것입니다, 감사합니다! :)
jaredwilli

215

뿐만 아니라 border-radius: 0, 추가 -webkit-appearance: none;.


2
해결책은 옳습니다. 그러나 개발 도구에서 왜 이런 일이 발생하는지 알 수 없습니다. 수수께끼를 해결해 주셔서 감사합니다!
mmln

101
그것은 작동하지만 완벽하지는 않지만 -webkit-appearance: none;오른쪽에 화살표 표시기가 선택 되지 않습니다 .
nightire

41
@nightire 다음 border: 0과 같은 개요 를 사용 하고 추가 하면 나에게 도움이되었습니다 outline: 1px inset black; outline-offset:-1px. 화살표를 유지하고 윤곽선으로 테두리를 가짜로 만들 수 있습니다.
Filipe Pereira

2
예, 이것은 모두가 말했듯이 선택 화살표가 사라지기 때문에 실제로 해결책이 아닙니다.
채드 존슨

2
IE를 잊지 마세요! :) select ::-ms-expand {표시 : 없음; }
Kyle Hawk

13

나는 같은 문제가 있었고 user1732055의 대답으로 테두리를 수정하는 동안 드롭 다운 화살표를 제거합니다. select요소 에서 테두리를 제거하고 테두리가 있는 래퍼 span를 만들어서이 문제를 해결했습니다 .

html :

<span class="select-wrapper">
    <select class="form-control no-radius">
        <option value="1">1</option>
        <option value="2">2</option>
        <option value="3">3</option>
    </select>
</span>

CSS :

select.no-radius{
    border:none;
}    
.select-wrapper{
    border: 1px solid black;
    border-radius: 0px;
}

https://jsfiddle.net/Lrqh0drd/6/


선택에 흰색 배경이있는 경우에만 작동합니다. 그렇지 않으면 다른 색을 사용하면 반경이 생깁니다.
MichalCh

안녕하세요 @MichalCh, 잘 잡아! 이 문제를 해결하는 한 가지 방법은 래퍼의 배경색을 select 요소와 동일한 값으로 설정하는 것입니다. 다음은 jsfiddle에서 수정 된 버전입니다. https://jsfiddle.net/Lrqh0drd/75/
Logan Besecker

이것이 가장 깨끗한 솔루션입니다.
Nikolay Tsenkov

2

사용할 수 있습니다 -webkit-border-radius: 0;. 이처럼 :-

-webkit-border-radius: 0;
border: 0;
outline: 1px solid grey;
outline-offset: -1px;

드롭 다운 화살표와 함께 사각형 모서리가 나타납니다. -webkit-appearance: none;Chrome에서 수행 한 모든 스타일이 해제되므로 사용 하지 않는 것이 좋습니다.


그러나 이것 역시 문제가있다. 초점을 맞출 때 윤곽선 테두리 반경이 지워지지 않습니다.
elquimista

@elquimista 당신은 그냥 사용할 수 있습니다 outline: none;.
gns

0

@ArnoTenkink의 SVG를 허용되는 답변과 결합 된 데이터 URL로 사용하면 망막 디스플레이를위한 완벽한 솔루션을 제공합니다.

select.form-control:not([multiple]) {
    border-radius: 0;
    appearance: none;
    background-position: right 50%;
    background-repeat: no-repeat;
    background-image: url(data:image/svg+xml,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22utf-8%22%3F%3E%20%3C%21DOCTYPE%20svg%20PUBLIC%20%22-//W3C//DTD%20SVG%201.1//EN%22%20%22http%3A//www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd%22%3E%20%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20xmlns%3Axlink%3D%22http%3A//www.w3.org/1999/xlink%22%20x%3D%220px%22%20y%3D%220px%22%20width%3D%2214px%22%20height%3D%2212px%22%20viewBox%3D%220%200%2014%2012%22%20enable-background%3D%22new%200%200%2014%2012%22%20xml%3Aspace%3D%22preserve%22%3E%20%3Cpolygon%20points%3D%223.862%2C7.931%200%2C4.069%207.725%2C4.069%20%22/%3E%3C/svg%3E);
    padding: .5em;
    padding-right: 1.5em
}

-5

클래스는 다음과 같습니다.

.form-control { border-radius: 0; }

부트 스트랩 css를 포함시킨 후에 재정의를 삽입하십시오.

선택 양식 컨트롤에서 반경을 제거하려는 경우에만 사용하십시오.

select.form-control { ... }

대신에

편집 : 크롬, 파이어 폭스, 오페라 및 사파리, IE9 +에서 작동합니다 (모두 Linux / Safari 및 IE에서 playonlinux에서 실행 중)


나는 질문에 폼 컨트롤에서 테두리 반경을 어떻게 변경했는지와 그것이 작동하지 않았다는 것을 구체적으로 보여주었습니다.
Tyler McGinnis 2016 년

1
jsfiddle.net/Ut4y9/3 는 작동하는 바이올린입니다. 여전히 컴퓨터에서 작동하지 않는 경우 사용중인 브라우저를 지정할 수 있습니까? 문제를 재현 할 수 없습니다. 죄송합니다
jBear Graphics 2016

기묘한. 최신 버전의 Chrome을 사용하고 있습니다. 분명히 그것은 당신이 둘 다 바뀌는 것을보고 있기 때문에 기계에 특정한 것입니다. downvote를 변경할 수 있도록 답을 편집하십시오. :)
Tyler McGinnis

나는 같은 문제가 있습니다. 테두리 반경을 무시해도 여전히 표시됩니다. 날 미치게 해
user1732055

이것은 여전히 가장 부트 스트랩 3 최근의 경우
genkilabs
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.