selector css para hacer coincidir un elemento sin atributo x [duplicado]

Resuelto Stephen Sorensen asked hace 15 años • 3 respuestas

Estoy trabajando en un archivo CSS y encuentro la necesidad de aplicar estilo a los cuadros de entrada de texto; sin embargo, tengo problemas. Necesito una declaración simple que coincida con todos estos elementos:

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

... pero no coincide con estos:

<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 no se especifica el atributo de tipo (porque el valor predeterminado es texto pero input[type='text']no coincide). Desafortunadamente, no pude encontrar ningún selector de este tipo en la especificación CSS3.

¿Alguien sabe de una manera de lograr esto?

Stephen Sorensen avatar Oct 08 '09 01:10 Stephen Sorensen
Aceptado

:notselector:

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

Soporte: en Internet Explorer 9 y superior

eveliotc avatar Oct 07 '2009 18:10 eveliotc

Para una solución más compatible con varios navegadores, puede diseñar todas las entradas de la forma que desee: texto no escrito y contraseña, y 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 cualquier parte de su código que genere las entradas no escritas darles una clase similar .no-typeo simplemente no generar ninguna salida? Además este tipo de selección se podría realizar con jQuery.

Tim Santeford avatar Oct 07 '2009 19:10 Tim Santeford