2011-09-17 9 views
11

Ho una semplice casella di selezione con un gruppo di opzioni nella mia applicazione.Come modificare lo stile di una casella di selezione 'etichetta gruppo opt

<select> 
    <optgroup label="Swedish Cars"> 
    <option value="volvo">Volvo</option> 
    <option value="saab">Saab</option> 
</optgroup> 
    ---- 
    ---- 
    ---- 
</select> 

Quando viene visualizzato nel browser, l'etichetta di gruppo di opzioni è visualizzata con grassetto e corsivo; Voglio che venga visualizzato senza nessuno di questi stili.

risposta

11

Purtroppo le caselle di selezione sono una delle poche cose a cui è possibile aggiungere uno stile molto piccolo con i CSS. Di solito sei limitato a come il browser lo rende.

Per esempio, sembra che questo in cromo:

enter image description here

E questo in Firefox:

enter image description here

+1

Quindi, questo significa che non è possibile ignorare il browser di stile utilizzando per visualizzare etichette di gruppi di opzioni, nella schermata sopra le auto svedesi e le auto americane? Mi piacerebbe visualizzare queste etichette in Peso carattere normale per tutti i browser. Voglio visualizzarlo in caratteri normali per tutti i browser. – gnanz

+1

Sì, non puoi farlo con i CSS, purtroppo fa parte del chrome del browser. – wesbos

+0

css dato da Helrik funziona per Firefox – gnanz

0

È possibile lo stile di una casella di selezione utilizzando solo i CSS, richiede un tipo di lavoro in giro:

Per prima cosa, lo circondi con un div e dai una classe:

<div class="selectStyle"> 
    <select> 
     <option>First Option</option> 
     <option>Second Option</option> 
    </select> 
</div> 

Poi assicurarsi che gli elementi di selezione sono in stile un certo modo usando i CSS:

.selectStyle select { 
    background: transparent; 
    width: 250px; 
    padding: 4px; 
    font-size: 1em; 
    border: 1px solid #ddd; 
    height: 25px; 
} 

E tu stile del div:

.selectStyle { 
    width: 235px; 
    height: 25px; 
    overflow: hidden; 
    background: url(yourArrow.png) no-repeat right #ccc; 
} 
+0

voglio solo stile optgroup Etichetta – gnanz

+0

Quindi scegli semplicemente come target il gruppo opt: optgroup [label = "Swedish Cars"] –

+0

Gnanz sta parlando dell'attributo label. Essere specifici riguardo all'optgroup non risolve veramente il suo problema. –

11

Sulla maggior parte dei browser (testato su più di IE e FF), puoi facilmente cambiare l'etichetta dell'optgroup solo con CSS:

select optgroup{ 
    background:#000; 
    color:#fff; 
    font-style:normal; 
    font-weight:normal; 
    } 

Ovviamente, è possibile impostare qualsiasi nome di classe anziché il tag html selezionato.

A proposito, come altre risposte hanno detto, ci sono ancora alcune opzioni CSS da usare con le caselle selezionate e molti webmaster le sovrascrivono usando il metodo fornito dall'utente949847. Ma questo codice dovrebbe essere sufficiente per soddisfare le tue esigenze.

+0

funziona con firefox, ancora non è possibile risolvere IE – gnanz

+3

Lavorare in IE10, FF21, Chrome28 e Opera12 a partire da questa data. (Mi spiace, non ho installato Safari!) Nota: sulla maggior parte dei browser menzionati, l'intera sezione è in stile, non solo l'etichetta. –

+0

Se si applicano gli stili ai tag 'option' e ai tag' optgroup', è possibile controllare in modo efficace la presentazione dell'etichetta senza alterare la presentazione standard degli elementi dell'elenco. – jatrim

7

Firefox stile l'etichetta con questa regola:

optgroup:before { 
    content: attr(label); 
    display: block; 
} 

È possibile eseguire l'override di esso.

+0

sei una leggenda. Questo funziona a meraviglia. Ti sto segnalando ... –

-1

Per un approccio diverso per eludere i problemi con gli optgroup di stile, suggerisco di utilizzare le opzioni disabilitate.

<option disabled>[group label]</option> 

si può avere un tiro in styling via ad es.

<style> [disabled] { color:#000; background-color:#CCC } </style> 
+0

Ho notato che questo non ha stile sui dispositivi mobili. C'è un modo per farlo? – riotgear

Problemi correlati