Rimuovi il raggio del bordo dal tag Select nel bootstrap 3


133

Sembra un problema banale, ma non riesco a capirlo.

Sul proprio sito Web Bootstraps hanno l'esempio Seleziona.

selezionare bootstrap



Guardando il codice sembra che ci sia un raggio di confine di 4 su quell'elemento selezionato. inserisci qui la descrizione dell'immagine



La mia speranza è che cambiando quel raggio di confine su 0 rimuova quindi il raggio di confine dall'elemento selezionato, tuttavia, non è così - come si vede nella figura sotto.

inserisci qui la descrizione dell'immagine



Ho esplorato tutti i CSS che stanno modificando quell'elemento select ma nessuno di questi sembra rimuovere il raggio del bordo.


1
Cambiare il raggio del bordo sulla .form-controlclasse funziona bene per me. bootply.com/Q7goAsFc0B
j08691

1
Anche nel tuo esempio ci sono angoli arrotondati su quell'elemento selezionato ...?
Tyler McGinnis,

2
Si scopre che è un problema con Chrome. L'apertura del bootply in Firefox non è arrotondata. Strano.
Tyler McGinnis,

Funziona per me sia in Chrome che in FF.
j08691,

1
per me non funziona in Chrome ma funziona bene in Firefox
Maverick,

Risposte:


256

Ecco una versione che funziona in tutti i browser moderni. Viene utilizzata la chiave appearance:noneche rimuove la formattazione predefinita. Poiché tutta la formattazione non è più disponibile, è necessario aggiungere nuovamente la freccia che differenzia visivamente la selezione dall'input. Nota: appearancenon è supportato in IE .

Esempio di lavoro: 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>

Sulla base del suggerimento di Arno Tenkink nei commenti, ecco un esempio usando a invece di a per l'icona della freccia.

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
Questa dovrebbe essere la vera risposta.
avoliva,

1
Questa è una risposta migliore di quella selezionata
Chris James Champeau,

7
Per questo puoi anche usare un 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>salva lo stesso spazio per i file. È anche memorizzabile nella cache e più facile da mantenere. Copia questo in un file e salvalo come .svg e usalo come sfondo.
Arno Tenkink,

1
questa è la risposta
Conrad Warhol,

2
Questa è sicuramente la risposta migliore. Ho cercato un modo per farlo alcune volte. Dovrebbe aiutare molto, grazie! :)
jaredwilli,

215

Inoltre border-radius: 0, aggiungi -webkit-appearance: none;.


2
la soluzione è giusta, ma non riuscire a capire perché ciò accada negli strumenti di sviluppo è semplicemente sbagliato. grazie per aver risolto l'uomo indovinello!
mml

101
Funziona ma non è perfetto, -webkit-appearance: none;causerà la mancata selezione dell'indicatore a freccia sul lato destro.
nightire

41
@nightire Ha funzionato per me se si utilizza border: 0e aggiungere un contorno come: outline: 1px inset black; outline-offset:-1px. Manterrà le frecce e puoi falsificare il bordo con il contorno.
Filipe Pereira,

2
Sì, questa non è davvero una soluzione perché, come tutti hanno detto, la freccia del selettore scompare.
Chad Johnson,

2
Non dimenticare IE! :) seleziona :: - ms-expand {display: none; }
Kyle Hawk,

13

Ho avuto lo stesso problema e mentre la risposta di user1732055 corregge il bordo, rimuove le frecce a discesa. Ho risolto questo rimuovendo il bordo selectdall'elemento e creando un wrapper spanche ha un bordo.

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/


Funziona solo se la selezione ha uno sfondo bianco. Altrimenti ci sarà un raggio se si usa un altro colore.
MichalCh,

Ciao @MichalCh, buona cattura! Un modo per aggirare questo sarebbe quello di impostare il colore di sfondo del wrapper sullo stesso valore dell'elemento select. Ecco una versione modificata su jsfiddle per dimostrare: https://jsfiddle.net/Lrqh0drd/75/
Logan Besecker

Questa è la soluzione più pulita.
Nikolay Tsenkov,

2

È possibile utilizzare -webkit-border-radius: 0;. Come questo:-

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

Ciò fornirà angoli quadrati e frecce a discesa. L'uso -webkit-appearance: none;non è raccomandato in quanto disattiverà tutto lo stile fatto da Chrome.


ma anche questo ha un problema; non cancella il raggio del bordo del contorno quando messo a fuoco.
elquimista,

@elquimista puoi semplicemente usarlo outline: none;.
gennaio

0

Utilizzando l'SVG di @ArnoTenkink come url di dati combinato con la risposta accettata, questo ci offre la soluzione perfetta per i display 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
}

-5

la classe si chiama:

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

assicurarsi di inserire l'override dopo aver incluso il bootstrap css.

Se si desidera SOLO rimuovere il raggio su selezionare i controlli modulo, utilizzare

select.form-control { ... }

anziché

EDIT: funziona per me su Chrome, Firefox, Opera e Safari, IE9 + (tutti in esecuzione su Linux / Safari e IE su Playonlinux)


Nella domanda ho mostrato in modo specifico come ho modificato il raggio di frontiera sul controllo dei moduli e non ha funzionato ... ed è ciò che mi ha spinto a porre la domanda.
Tyler McGinnis,

1
jsfiddle.net/Ut4y9/3 ecco un violino funzionante. se continua a non funzionare sul tuo computer, potresti specificare il browser che stai utilizzando? Non riesco a riprodurre il tuo problema. scusa
Grafica jBear

Strano. Sto usando l'ultima versione di Chrome. Ovviamente è qualcosa di specifico per la macchina poiché entrambi lo vedete cambiato. Modifica la tua risposta in modo che io possa cambiare il mio voto negativo :)
Tyler McGinnis

Ho lo stesso problema. Nonostante io ignori il raggio di confine, mostra ancora. Mi sta facendo impazzire.
user1732055

Questo è ancora il caso del più recente Bootstrap 3
genkilabs,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.