2009-10-07 17 views
211

Estoy trabajando en un archivo CSS y encuentro la necesidad de estilo de cuadros de entrada de texto, sin embargo, estoy teniendo problemas. Necesito una simple declaración que coincide con todos estos elementos:css selector para que coincida con un elemento sin atributo x

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

... pero no coincide éstos:

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

Esto es lo que me gustaría hacer:

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

En el CSS anterior, observe que el primer selector es input[!type]. Lo que quiero decir con esto es que quiero seleccionar todos los cuadros de entrada donde el atributo de tipo no está especificado (porque el valor predeterminado es texto, pero input[type='text'] no coincide). Lamentablemente, no hay tal selector en la especificación CSS3 que pude encontrar.

¿Alguien sabe de una manera de lograr esto?

Respuesta

345

: no selector de

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

Support: en Internet Explorer 9 y superior

+11

Este no es compatible con IE6, IE7 e IE8 probablemente no en –

+130

@Tim, por otra parte, lo que apoya _es_ en IE6, 7 y 8 ... – priestc

+1

@ nbv4, verdadero dat, pero vea mi respuesta. –

26

Para una solución más a través del navegador se podía peinar todo entradas de la forma en que desea que el no escrito, texto y contraseña, luego otro estilo anula ese estilo para radios, casillas de verificación, etc.

input { border:solid 1px red; } 

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

- O -

podría cualquiera que sea parte de su código que está generando las entradas no mecanografiado darles una clase como .no-type o simplemente no se emiten en absoluto? Además, este tipo de selección se puede hacer con jQuery.

+0

solución inteligente. Tendría que actualizarse para los nuevos tipos html5 (por ejemplo, "correo electrónico") – TimoSolo

+5

Eso no es lo mismo; por ejemplo, Opera eliminaría sus estilos predeterminados de una entrada si elimina el borde. – feeela

8

sólo quería añadir a esto, se puede tener la: no selectora en oldIE usando selectivizr: http://selectivizr.com/

Cuestiones relacionadas