2009-10-07 1 views
211

Sto lavorando su un file CSS e trovo la necessità di assegnare uno stile alle caselle di immissione testo, tuttavia, sto incontrando dei problemi. Ho bisogno di una semplice dichiarazione che corrisponde a tutti questi elementi:Selettore css per abbinare un elemento senza attributo x

<input /> 
<input type='text' /> 
<input type='password' /> 

... ma non corrisponde a questi:

<input type='submit' /> 
<input type='button' /> 
<input type='image' /> 
<input type='file' /> 
<input type='checkbox' /> 
<input type='radio' /> 
<input type='reset' /> 

Ecco quello che vorrei fare:

input[!type], input[type='text'], input[type='password'] { 
    /* styles here */ 
} 

Nel CSS precedente, si noti che il primo selettore è input[!type]. Ciò che intendo con questo è che voglio selezionare tutte le caselle di input in cui l'attributo type non è specificato (perché il valore predefinito è text ma input[type='text'] non corrisponde a questo). Sfortunatamente, non c'è un tale selettore nelle specifiche CSS3 che potrei trovare.

Qualcuno sa di un modo per realizzare questo?

risposta

345

: non selettore

input:not([type]), input[type='text'], input[type='password'] { 
    /* style here */ 
} 

Support: in Internet Explorer 9 e versioni successive

+11

Questo non è supportato su IE6, IE7 e probabilmente non in IE8 –

+130

@ Tim, poi di nuovo, cosa _è_ supportato in IE6, 7 e 8 ... – priestc

+1

@ nbv4, true dat, ma vedere la mia risposta. –

26

Per una soluzione più cross-browser è possibile lo stile tutto Ingressi Il modo in cui si desidera che il non-digitato, testo e password quindi un altro stile sostituisce quello stile per radio, caselle di controllo, ecc.

input { border:solid 1px red; } 

input[type=radio], 
input[type=checkbox], 
input[type=submit], 
input[type=reset], 
input[type=file] 
     { border:none; } 

- O -

è possibile che qualsiasi parte del codice che genera gli ingressi non digitati fornisca loro una classe come .no-type o semplicemente non li restituisca affatto? Inoltre questo tipo di selezione potrebbe essere fatto con jQuery.

+0

. dovrebbe aggiornare per i nuovi tipi di html5 (es. "email") – TimoSolo

+5

Non è lo stesso; per esempio Opera rimuoverà gli stili di default da un input se rimuovi il bordo. – feeela

8

Volevo solo aggiungere a questo, si può avere il: non selector in oldIE utilizzando selectivizr: http://selectivizr.com/