Xóa bán kính đường viền khỏi thẻ Chọn trong bootstrap 3


133

Đây có vẻ là một vấn đề nhỏ, nhưng tôi không thể tìm ra nó.

Trên trang web riêng của Bootstraps, họ có ví dụ Chọn.

bootstrap chọn



Nhìn vào mã, có vẻ như có bán kính đường viền là 4 trên phần tử được chọn đó. nhập mô tả hình ảnh ở đây



Tôi hy vọng rằng việc thay đổi bán kính đường viền thành 0 sau đó sẽ loại bỏ bán kính đường viền khỏi thành phần được chọn, tuy nhiên, đó không phải là trường hợp - như trong hình dưới đây.

nhập mô tả hình ảnh ở đây



Tôi đã khám phá tất cả các CSS đang thay đổi phần tử chọn đó nhưng dường như không có phần tử nào xóa bỏ bán kính đường viền.


1
Thay đổi bán kính đường viền trên .form-controllớp hoạt động tốt đối với tôi. bootply.com/Q7goAsFc0B
j08691

1
Ngay cả trong ví dụ của bạn cũng có các góc được làm tròn trên phần tử chọn đó ...?
Tyler McGinnis

2
Hóa ra đó là một vấn đề với Chrome. Mở bootply của bạn trong firefox nó không được làm tròn. Kỳ dị.
Tyler McGinnis

Hoạt động với tôi trong cả Chrome và FF.
j08691

1
đối với tôi nó không hoạt động trong chrome nhưng hoạt động tốt trong firefox
Maverick

Câu trả lời:


256

Đây là một phiên bản hoạt động trong tất cả các trình duyệt hiện đại. Khóa này đang sử dụng appearance:noneloại bỏ định dạng mặc định. Vì tất cả các định dạng đã biến mất, bạn phải thêm lại vào mũi tên phân biệt trực quan lựa chọn từ đầu vào. Lưu ý: appearancekhông được hỗ trợ trong IE .

Ví dụ hoạt động: 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>

Dựa trên đề xuất của Arno Tenkink trong các bình luận, đây là một ví dụ sử dụng Thay vì một cho biểu tượng mũi tên.

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
Đây phải là câu trả lời thực sự.
avoliva

1
Đây là một câu trả lời tốt hơn câu trả lời được chọn
Chris James Champeau

7
Bạn cũng có thể sử dụng một SVG cho việc này. <?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>nó tiết kiệm không gian tập tin tương tự. Nó cũng có thể lưu trữ và dễ bảo trì hơn. Sao chép tệp này vào một tệp và lưu dưới dạng .svg và sử dụng nó làm nền.
Arno Tenkink 11/03/2016

1
đây là câu trả lời.
Conrad Warhol

2
Đây chắc chắn là câu trả lời tốt nhất. Tôi đã tìm kiếm một cách để làm điều này một vài lần. Nó sẽ giúp rất nhiều, cảm ơn! :)
jaredwilli

215

Ngoài ra border-radius: 0, thêm -webkit-appearance: none;.


2
giải pháp là đúng - nhưng không thể hiểu tại sao điều này xảy ra trong các công cụ dev chỉ là sai. cảm ơn vì đã giải quyết câu đố!
mmln

101
Nó hoạt động nhưng không hoàn hảo, -webkit-appearance: none;sẽ gây ra sự thiếu chọn chỉ báo mũi tên ở phía bên phải.
đêm

41
@nightire Nó hoạt động với tôi nếu bạn sử dụng border: 0và thêm một phác thảo như : outline: 1px inset black; outline-offset:-1px. Sẽ giữ các mũi tên và bạn có thể giả đường viền với đường viền.
Filipe Pereira

2
Vâng, đây không thực sự là một giải pháp bởi vì, như mọi người đã nói, mũi tên chọn biến mất.
Chad Johnson

2
Đừng quên IE! :) chọn :: - ms-extend {display: none; }
Kyle Hawk

13

Tôi đã có cùng một vấn đề và trong khi câu trả lời của user1732055 sửa đường viền, nó sẽ loại bỏ các mũi tên thả xuống. Tôi đã giải quyết điều này bằng cách loại bỏ đường viền khỏi thành selectphần và tạo một trình bao bọc spancó đường viền.

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/


Điều này chỉ hoạt động nếu lựa chọn có nền trắng. Nếu không sẽ có bán kính nếu sử dụng màu khác.
MichalCh

Xin chào @MichalCh, bắt tốt! Một cách để khắc phục điều này là đặt màu nền của trình bao bọc thành cùng giá trị với thành phần được chọn. Dưới đây là một phiên bản sửa đổi trên jsfiddle để chứng minh: https://jsfiddle.net/Lrqh0drd/75/
Logan Besecker

Đây là giải pháp sạch nhất.
Nikolay Tsenkov

2

Bạn có thể sử dụng -webkit-border-radius: 0;. Như thế này:-

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

Điều này sẽ cho góc vuông cũng như mũi tên thả xuống. Việc sử dụng -webkit-appearance: none;không được khuyến khích vì nó sẽ tắt tất cả các kiểu được thực hiện bởi Chrome.


nhưng điều này cũng có một vấn đề; Nó không xóa bán kính đường viền phác thảo khi tập trung.
elquimista

@elquimista bạn chỉ có thể sử dụng outline: none;cho điều đó.
gns

0

Sử dụng SVG từ @ArnoTenkink làm url dữ liệu kết hợp với câu trả lời được chấp nhận, điều này mang lại cho chúng tôi giải pháp hoàn hảo cho màn hình võng mạc.

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

lớp được gọi là:

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

hãy chắc chắn chèn ghi đè sau khi bao gồm css bootstraps.

Nếu bạn CHỈ muốn xóa bán kính khi chọn điều khiển biểu mẫu, hãy sử dụng

select.form-control { ... }

thay thế

EDIT: hoạt động với tôi trên chrome, firefox, opera và safari, IE9 + (tất cả chạy trên linux / safari & IE trên playonlinux)


Tôi đặc biệt chỉ ra trong câu hỏi làm thế nào tôi thay đổi bán kính đường viền trên điều khiển biểu mẫu và nó không hoạt động ..., đó là điều khiến tôi phải đặt câu hỏi.
Tyler McGinnis

1
jsfiddle.net/Ut4y9/3 ở đây là một fiddle làm việc. nếu nó vẫn không hoạt động trên máy của bạn, bạn có thể vui lòng chỉ định trình duyệt bạn đang sử dụng không? Tôi không thể tái tạo vấn đề của bạn. xin lỗi
Đồ họa jBear

Kỳ dị. Tôi đang sử dụng phiên bản Chrome mới nhất. Rõ ràng đó là thứ gì đó cụ thể của máy vì cả hai bạn đều thấy nó thay đổi. Chỉnh sửa câu trả lời của bạn để tôi có thể thay đổi downvote của mình :)
Tyler McGinnis

Tôi đã có cùng một vấn đề. Mặc dù tôi ghi đè bán kính biên giới, nó vẫn hiển thị. Lái xe cho tôi hạt dẻ.
dùng1732055

Đây vẫn là trường hợp với Bootstrap 3 gần đây nhất
genkilabs
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.