2008-10-09 24 views

Respuesta

16

Hay muchos factores involucrados en determinar qué estilos se anulan entre sí. Cuanto más baja aparezca una declaración de estilo en la cascada , y más específica está dirigida al elemento, más pesará frente a otros estilos.

Esta es la herencia de estilos para CSS2 standard:

  1. Si los resultados de la cascada en un valor, lo utilizan.
  2. De lo contrario, si la propiedad es heredada, use el valor del elemento padre , generalmente el valor calculado.
  3. De lo contrario, utilice el valor inicial de la propiedad. El valor inicial de cada propiedad se indica en la definición de la propiedad .

Internamente, el navegador calculate the specificity of a rule, de acuerdo con la norma. ! La importante declaración se añaden peso a la regla, pero dinámicamente la asignación de un atributo de estilo a menudo tienen prioridad, ya que suele ser más altamente especifica ..

+0

Bueno, un atributo de estilo asignado dinámicamente * es * sobrescrito por! Importante en IE7, IE6 y FF2 en este momento, por lo que tengo curiosidad (se desea ser así, solo curiosidad :-)) –

+0

Mira los estilos , y vea cómo pesan según el estándar. – keparo

+0

Tengo style = "display: none;" frente a div # id div {display: block! important; }. Este último gana. http://www.w3.org/TR/CSS2/cascade.html#important-rules puede ser de algún interés. –

0

Estoy bastante seguro de que no todos los navegadores reconocen la importante declaración. Pero no puedo recordar cuáles salen de mi cabeza. Lo comprobará y le responderé.

[EDIT] Puedo confirmar que IE6 y anteriores no reconocen! Important (a menos que el navegador esté en modo de cumplimiento de normas, no es el predeterminado).

Puede utilizar! Importante para anular una regla en línea. ¡Pero también recuerde que las reglas en línea pueden ser etiquetadas! Importantes también.

+0

Heh, tengo IE6 ejecutándose en modo compatible con estándares y está escuchando la declaración! Important. Buen punto en el estilo en línea! Importante. –

+0

Como afirma Graphain, IE6 puede admitir! Important. – ceejayoz

+0

Corregiré mi publicación – Dr8k

11

Bueno hasta ahora la investigación parece sugerir:

  • IE7 admite! Importante.
  • Compatible con FireFox 2 y 3! Important.
  • IE6 admite! Importante en el modo compatible con los estándares.

Sin embargo, Internet Explorer 6 (posible IE7) no soporta importante en this case:

someselector { 
    property: value !important; 
    same-property: another-value; 
} 

usará el segundo valor (la última lista).

Esto se confirma por this page:

En Internet Explorer 6 y anteriores, si aparece una importante declaración antes de una declaración normal para la misma propiedad dentro del mismo bloque de declaración , lo normal declaración sobrescribirá la declaración importante .

Internet Explorer 6 y 7 dan importancia a una declaración cuando un identificador ilegal se utiliza en lugar de la palabra clave importante, en lugar de haciendo caso omiso de la declaración ya que debería.

El comentario de Gizmo indica que el soporte de Safari y Opera es importante.

+1

en realidad es una manera fácil de obtener estilos solo de IE. #myBox {ancho: 300px! importante; ancho: 290px} ... solo asegúrate de comentarlo, ¡para que el siguiente tipo se quede rascándose la cabeza! – nickf

+0

Safari y Opera lo soportan muy bien. – gizmo