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.