Hapus radius batas dari tag Pilih di bootstrap 3

133

Ini sepertinya masalah sepele, tapi saya tidak bisa mengatasinya.

Di situs web Bootstraps sendiri mereka memiliki contoh Pilih.

pilih bootstrap



Melihat kode itu terlihat seperti ada batas-radius 4 pada elemen pilih itu. masukkan deskripsi gambar di sini



Harapan saya adalah bahwa mengubah batas-radius ke 0 akan menghapus radius perbatasan dari elemen pilih, namun, itu tidak terjadi - seperti yang terlihat pada gambar di bawah ini.

masukkan deskripsi gambar di sini



Saya telah menjelajahi semua CSS yang mengubah elemen pilih itu tetapi tidak ada yang menghilangkan jari-jari perbatasan.

Tyler McGinnis
sumber
1
Mengubah radius batas di .form-controlkelas berfungsi baik untuk saya. bootply.com/Q7goAsFc0B
j08691
1
Bahkan dalam contoh Anda ada sudut bulat pada elemen pilih itu ...?
Tyler McGinnis
2
Ternyata ini masalah dengan Chrome. Membuka bootply Anda di firefox tidak dibulatkan. Aneh.
Tyler McGinnis
Bekerja untuk saya di Chrome dan FF.
j08691
1
bagi saya itu tidak bekerja di chrome tetapi berfungsi dengan baik di firefox
Maverick

Jawaban:

256

Ini adalah versi yang berfungsi di semua browser modern. Kuncinya adalah menggunakan appearance:noneyang menghapus pemformatan default. Karena semua format sudah tidak ada, Anda harus menambahkan kembali panah yang membedakan secara visual pemilihan dari input. Catatan: appearancetidak didukung di IE .

Contoh kerja: 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>

Berdasarkan saran Arno Tenkink dalam komentar, berikut adalah contoh menggunakan a bukannya a untuk ikon panah.

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>

Eric
sumber
26
Ini harus menjadi jawaban nyata.
avoliva
1
Ini adalah jawaban yang lebih baik daripada yang dipilih
Chris James Champeau
7
Anda juga dapat menggunakan SVG untuk ini. <?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>ini menghemat ruang file yang sama. Ini juga dapat disimpan dalam cache dan lebih mudah untuk dipelihara. Salin ini ke dalam file dan simpan sebagai .svg dan gunakan sebagai latar belakang.
Arno Tenkink
1
ini jawabannya.
Conrad Warhol
2
Ini jelas merupakan jawaban terbaik. Saya telah mencari cara untuk melakukan ini beberapa kali. Ini akan banyak membantu, terima kasih! :)
jaredwilli
215

Selain itu border-radius: 0, tambahkan -webkit-appearance: none;.

pengguna1732055
sumber
2
solusinya benar - tetapi tidak dapat melihat mengapa ini terjadi di alat dev hanya salah lurus. terima kasih telah memecahkan pria teka-teki!
mmln
101
Ini berfungsi tetapi tidak sempurna, -webkit-appearance: none;akan menyebabkan kurangnya indikator panah pilih di sisi kanan.
nightire
41
@nightire Ini bekerja untuk saya jika Anda menggunakan border: 0dan menambahkan garis besar seperti: outline: 1px inset black; outline-offset:-1px. Akan menyimpan panah dan Anda dapat memalsukan perbatasan dengan garis besar.
Filipe Pereira
2
Ya ini bukan solusi karena, seperti semua orang katakan, panah pemilih menghilang.
Chad Johnson
2
Jangan lupakan IE! :) pilih :: - ms-expand {display: none; }
Kyle Hawk
13

Saya memiliki masalah yang sama dan sementara jawaban pengguna1732055 memperbaiki perbatasan, itu menghilangkan panah dropdown. Saya memecahkan ini dengan menghapus perbatasan dari selectelemen dan membuat pembungkusspan yang memiliki perbatasan.

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/

Logan Besecker
sumber
Ini hanya berfungsi jika pilih memiliki latar belakang putih. Kalau tidak, akan ada radius jika warna lain digunakan.
MichalCh
Hai @MichalCh, tangkapan bagus! Salah satu cara untuk menyiasatinya adalah dengan mengatur warna latar belakang pembungkus ke nilai yang sama dengan elemen pilih. Berikut ini adalah versi modifikasi pada jsfiddle untuk diperagakan: https://jsfiddle.net/Lrqh0drd/75/
Logan Besecker
Ini adalah solusi terbersih.
Nikolay Tsenkov
2

Anda bisa menggunakannya -webkit-border-radius: 0;. Seperti ini:-

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

Ini akan memberikan sudut kuadrat serta panah dropdown. Penggunaan -webkit-appearance: none;tidak disarankan karena akan mematikan semua gaya yang dilakukan oleh Chrome.

Nyonya
sumber
tetapi ini juga memiliki masalah; itu tidak menghapus garis batas radius saat fokus.
elquimista
@elquimista bisa Anda gunakan outline: none;untuk itu.
gns
0

Menggunakan SVG dari @ArnoTenkink sebagai url data yang dikombinasikan dengan jawaban yang diterima, ini memberi kita solusi sempurna untuk tampilan retina.

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
}
Marius
sumber
-5

kelas ini disebut:

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

pastikan untuk memasukkan override setelah memasukkan bootstraps css.

Jika Anda HANYA ingin menghapus radius pada pilih bentuk-kontrol gunakan

select.form-control { ... }

sebagai gantinya

EDIT: berfungsi untuk saya di chrome, firefox, opera, dan safari, IE9 + (semua berjalan di linux / safari & IE di playonlinux)

jBear Graphics
sumber
Saya secara khusus menunjukkan dalam pertanyaan bagaimana saya mengubah radius perbatasan pada kontrol formulir dan tidak berfungsi ..., yang mendorong saya untuk mengajukan pertanyaan.
Tyler McGinnis
1
jsfiddle.net/Ut4y9/3 di sini adalah biola yang berfungsi. jika masih tidak berfungsi pada mesin Anda, bisakah Anda menentukan browser yang Anda gunakan? Saya tidak dapat mereproduksi masalah Anda. maaf
jBear Graphics
Aneh. Saya menggunakan Chrome versi terbaru. Jelas itu sesuatu yang spesifik mesin karena Anda berdua melihatnya berubah. Edit jawaban Anda sehingga saya dapat mengubah downvote saya :)
Tyler McGinnis
Saya punya masalah yang sama. Meskipun saya mengesampingkan batas-jari-jari itu masih menunjukkan. Membuatku gila.
user1732055
Ini masih terjadi dengan Bootstrap 3 terbaru
genkilab