2009-09-07 9 views
0

Si je définis un attribut CSS dans une classe CSS et dans un élément directement, quelle valeur finit par être utilisée?CSS conflit d'attribut, qui est censé gagner?

Soit la largeur d'utilisation comme notre exemple

<html> 
<head> 
<style type="text/css"> 
    .a { 
    width: 100px; 
    } 
</style> 
</head> 
<body> 
<div class="a" style="width: 200px;"> </div> 
</body> 
</html> 

Quelle devrait être la largeur de la div dans un navigateur? (selon la norme, pas ce qui se passe en pratique)

Répondre

6

En cascade (d'où son nom) indique préférence de l'élément sur les styles de fichiers sur les styles de fichiers référencés.

1

Le style de l'élément sera utilisé car il a une spécificité plus élevée.

Les règles de spécificité:

  • élément style: 1000 points
  • id: 100 points
  • classe: 10 points
  • nom de l'élément (table, div, etc.): 1 point

Exemples:

  • .class soit 10 points
  • table.class est de 11 points
  • div#myId.class est de 111 points de
  • div est de 1 point

La déclaration avec le plus de points sera utilisé. Cependant, vous pouvez remplacer le style placé à n'importe quel niveau en utilisant !important.

1

Cela devrait être 200px. La règle définie here indique que si le "si la déclaration provient d'un attribut 'style' plutôt que d'une règle avec un sélecteur" alors c'est la plus haute priorité/spécificité.

1

la valeur définie sur l'élément devrait prévaloir ...

1

A propos de cette question, vous pouvez jeter un oeil à la spécification; en particulier la section 6.4.3 Calculating a selector's specificity. Section 6.4.1 Cascading order sera probablement utile aussi. L'attribut "style" est le dernier à être déclaré et le plus spécifique; c'est donc celui qui devrait être utilisé.

+0

Il est utilisé parce que c'est le plus spécifique, pas parce que c'est le dernier déclaré; savoir lequel est le «dernier» ne serait significatif que s'il existe des règles de spécificité par ailleurs égales. – ChrisW