2009-01-22 13 views
103

¿Hay alguna manera con CSS para apuntar todas las entradas según su tipo? Tengo una clase deshabilitada que uso en varios elementos de formulario deshabilitados, y estoy configurando el color de fondo para cuadros de texto, pero no quiero que mis casillas obtengan ese color.Selector CSS para <input type = "?"

Sé que puedo hacer esto con clases separadas pero prefiero usar CSS si es posible. Estoy seguro de que puedo configurar esto en javascript, pero de nuevo en busca de CSS.

Me estoy orientando a IE7 +. Entonces no creo que pueda usar CSS3.

Editar

Con CSS3 que sería capaz de hacer algo así?

INPUT[type='text']:disabled que sería aún mejor deshacerse de mi clase por completo ...

Editar

Ok gracias por la ayuda! Así que aquí hay un selector que modifica todos los cuadros de texto y las áreas que han sido deshabilitados sin que sea necesario establecer ninguna clase, cuando empecé a esta pregunta Nunca pensé que esto era posible ...

INPUT[disabled][type='text'], TEXTAREA[disabled] 
{ 
    background-color: Silver; 
} 

Esto funciona en IE7

+2

He escrito [un artículo] (http://sarfraznawaz.wordpress.com/2010/02/22/css-attribute-selector/) con información detallada acerca de los selectores de atributos CSS. – Sarfraz

Respuesta

149

Sí.IE7 + soporta selectores de atributos:

input[type=radio] 
input[type^=ra] 
input[type*=d] 
input[type$=io] 

entrada Elemento con el tipo de atributo que contiene un valor que es igual a, comienza con, contiene o termina con un cierto valor.

Otros (IE7 +) selectores de seguros son:

  • Padres> niño que tiene: p > span { font-weight: bold; }
  • Precedido por ~ elemento que es: span ~ span { color: blue; }

Lo que para <p><span/><span/></p> efectivamente le daría:

<p> 
    <span style="font-weight: bold;"> 
    <span style="font-weight: bold; color: blue;"> 
</p> 

Piel lectura continua: Browser CSS compatibility on quirksmode.com

Me sorprende que los demás piensen que no se puede hacer. Los selectores de atributos CSS ya han estado aquí por algún tiempo. Supongo que es hora de que limpiemos nuestros archivos .css.

+0

Ok, lo probé pero no funcionó, ahora está funcionando, así que debo tener mi sintaxis en mal estado. – JoshBerke

+0

¡Acabas de alegrarme el día! Ahora si quieres hacer mi semana dime que se puede hacer en IE6 sin usar Expresiones jeje :-) j/k there – JoshBerke

+13

Desafortunadamente no puede. Dejé de apoyar IE6 fuera de puntos de vista religiosos y sugiero que todos lo hagamos también. Hoy uso el comentario condicional de IE para indicar a los usuarios que su computadora y su privacidad corren el riesgo de usar IE6 y que deben actualizarse inmediatamente: P –

0

este momento , La respuesta corta es no. CSS (2.1) solo marcará los elementos de un DOM, no sus atributos. Tendría que aplicar una clase específica a cada entrada.

Bummer Lo sé, porque sería increíblemente útil.

Sé que has dicho que preferirías CSS sobre JavaScript, pero aún deberías considerar el uso de jQuery. Proporciona una forma muy limpia y elegante de agregar estilos a los elementos DOM en función de los atributos.

+0

jquery es la manera de hacer esto, o simplemente JavaScript en general – TravisO

+4

Afaict, esta respuesta es incorrecta (la parte CSS 2.1): http://www.w3.org/TR/CSS21/selector.html#attribute-selectors. Si no, entonces aclara tu respuesta. – cic

+1

Lo siento, tienes razón. Lo que menos espero de IE7 es que a menudo los desarrolladores aún necesitan soportar IE6 al mismo tiempo. Debería haber leído la pregunta con más cuidado y haber hecho mi tarea. –

1

Puede hacer esto con jQuery. Usando sus selectores, puede seleccionar por atributos, como tipo. Esto, sin embargo, requieren que los usuarios han Javascript activado, y un archivo adicional para descargar, pero si funciona ...

3

Lamentablemente los otros carteles son correctos que estás ... realmente tan corregido de Kron, que están bien con su IE7 y un médico estricto, pero la mayoría de nosotros con los requisitos de IE6 se reducen a JS o referencias de clase para esto, pero es una propiedad CSS2, una sola y sin apoyo suficiente de IE^h^h navegadores.

Fuera de compleción, el selector de tipo es - similar a xpath - del formulario [attribute=value] pero existen muchas variantes interesantes. Es será ser bastante potente cuando esté disponible, es bueno tenerlo en la cabeza para IE8.

+0

¿Tiene una referencia de soporte del navegador más actualizada? Eso está basado en IE7 beta me encantaría ver IE8 – JoshBerke

+0

IE8 todavía está en versión beta, pero el modo peculiar dice "sí": http://www.quirksmode.org/css/contents.html – annakata

+0

Todavía estoy soportando IE6 simplemente no es esto agregado pequeño toque visual. – JoshBerke

Cuestiones relacionadas