Bootstrap 3'te Select etiketinden kenarlık yarıçapını kaldırın


133

Bu önemsiz bir problem gibi görünüyor, ama çözemiyorum.

Bootstraps'ın kendi web sitesinde Select örneği var.

önyükleme seçimi



Koda bakıldığında, bu seçili öğede 4 kenarlık yarıçapı varmış gibi görünüyor. görüntü açıklamasını buraya girin



Umudum, bu sınır yarıçapını 0 olarak değiştirmenin daha sonra kenarlık yarıçapını seçilen öğeden kaldırmasıdır, ancak durum böyle değil - aşağıdaki resimde görüldüğü gibi.

görüntü açıklamasını buraya girin



Bu seçili öğeyi değiştiren tüm CSS'yi araştırdım ancak hiçbiri kenarlık yarıçapını kaldırmıyor gibi görünüyor.


1
.form-controlSınıftaki sınır yarıçapını değiştirmek benim için iyi çalışıyor. bootply.com/Q7goAsFc0B
j08691

1
Örneğinizde bile bu seçili öğede yuvarlatılmış köşeler var ...?
Tyler McGinnis

2
Bunun Chrome ile ilgili bir sorun olduğu ortaya çıktı. Bootply'nizi firefox'ta açmak yuvarlak değildir. Tuhaf.
Tyler McGinnis

Hem Chrome hem de FF'de benim için çalışıyor.
j08691

1
benim için Chrome'da çalışmıyor ama firefox'ta iyi çalışıyor
Maverick

Yanıtlar:


256

İşte tüm modern tarayıcılarda çalışan bir sürüm. Anahtar, appearance:nonevarsayılan biçimlendirmeyi kaldıran kullanıyor . Tüm biçimlendirme gittiği için, girişi görsel olarak ayıran oku tekrar eklemeniz gerekir. Not: appearanceIE'de desteklenmez .

Çalışma örneği: 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>

Arno Tenkink'in yorumlardaki önerisine dayanarak , burada bir yerine ok simgesi için.

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
Bu gerçek cevap olmalı.
avoliva

1
Bu seçilenden daha iyi bir cevap
Chris James Champeau

7
Bunun için bir SVG de kullanabilirsiniz. <?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>aynı dosya alanından tasarruf sağlar. Ayrıca önbelleğe alınabilir ve bakımı daha kolaydır. Bunu bir dosyaya kopyalayın ve .svg olarak kaydedin ve arka plan olarak kullanın.
Arno Tenkink

1
işte cevap.
Conrad Warhol

2
Bu kesinlikle en iyi cevap. Bunu birkaç kez yapmanın bir yolunu aradım. Çok yardımcı olmalı, teşekkürler! :)
jaredwilli

215

Ek olarak border-radius: 0ekleyin -webkit-appearance: none;.


2
çözüm doğru - ancak dev araçlarında bunun neden olduğunu görememek tamamen yanlış. bilmeceyi çözdüğün için teşekkürler adam!
mmln

101
Çalışır ancak mükemmel değildir -webkit-appearance: none;, sağ tarafta ok göstergesi eksikliğine neden olur.
nightire

41
@nightire kullanırsan benim için çalıştı border: 0 ve benzeri bir taslak ekleyin: outline: 1px inset black; outline-offset:-1px. Okları tutacak ve sınırı dış hat ile taklit edebilirsiniz.
Filipe Pereira

2
Evet, bu gerçekten bir çözüm değil çünkü herkesin söylediği gibi seçici ok kayboluyor.
Chad Johnson

2
IE'yi unutma! :) seçin :: - ms-expand {display: none; }
Kyle Hawk

13

Aynı sorunu yaşadım ve user1732055'in cevabı sınırı düzeltirken, açılır okları kaldırıyor. Bunu, kenarlığı selectöğeden kaldırarak ve kenarlığı olan bir sarmalayıcı spanoluşturarak çözdüm.

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/


Bu, yalnızca seçimin arka planı beyazsa çalışır. Aksi takdirde, başka bir renk kullanılırsa bir yarıçap olacaktır.
MichalCh

Merhaba @MichalCh, iyi yakaladın! Bunu aşmanın bir yolu, sarmalayıcının arka plan rengini select öğesiyle aynı değere ayarlamaktır. İşte jsfiddle'ın değiştirilmiş bir versiyonu: https://jsfiddle.net/Lrqh0drd/75/
Logan Besecker

Bu en temiz çözümdür.
Nikolay Tsenkov

2

Kullanabilirsiniz -webkit-border-radius: 0;. Bunun gibi:-

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

Bu, kare köşelerin yanı sıra açılır oklar da verecektir. -webkit-appearance: none;Chrome tarafından yapılan tüm stilleri kapatacağından kullanılması önerilmez.


ama bunun da bir sorunu var; odaklandığında dış kenarlık yarıçapını temizlemez.
elquimista

@elquimista outline: none;bunun için kullanabilirsiniz .
gns

0

@ArnoTenkink'teki SVG'yi, kabul edilen yanıtla birlikte bir veri url'si olarak kullanmak, bize retina ekranlar için mükemmel bir çözüm sunar.

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

sınıfın adı:

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

bootstraps css'i ekledikten sonra geçersiz kılmayı eklediğinizden emin olun.

YALNIZCA seçili form kontrollerindeki yarıçapı kaldırmak istiyorsanız

select.form-control { ... }

yerine

DÜZENLEME: benim için chrome, firefox, opera ve safari üzerinde çalışıyor, IE9 + (tümü linux / safari & IE'de playonlinux üzerinde çalışıyor)


Soruda özellikle form kontrolünde sınır yarıçapını nasıl değiştirdiğimi gösterdim ve işe yaramadı ... bu da soruyu sormamı sağladı.
Tyler McGinnis

1
jsfiddle.net/Ut4y9/3 işte çalışan bir keman. Hala makinenizde çalışmıyorsa, lütfen kullandığınız tarayıcıyı belirtir misiniz? Sorununuzu yeniden oluşturamıyorum. afedersiniz
jBear Graphics

Tuhaf. Chrome'un en son sürümünü kullanıyorum. Açıkçası, makineye özgü bir şey çünkü ikinizin de değiştiğini görüyorsunuz. Yanıtınızı, olumsuz oyumu değiştirebilmem için düzenleyin :)
Tyler McGinnis

Ben de aynı sorunu yaşıyorum. Sınır yarıçapını geçersiz kılmama rağmen hala gösteriyor. Beni delirtiyor.
user1732055

En son Bootstrap 3
genkilabs
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.