2010-12-02 17 views
0

Je suis curieux de savoir l'efficacité de cet exemple morceau de CSS:Est-ce que les navigateurs interprètent/exécutent les balises css qu'ils considèrent comme vides? (par exemple IE hacks)

ul, a, span, p, li { *zoom:1; } 

S'il vous plaît garder à l'esprit que cela est purement théorique si les mérites ou les pièges de hacks CSS ne sont pas tellement d'intérêt .

Ma question est - Qu'est-ce que les navigateurs autres que IE6 & 7 ne:

  1. regard pour correspondre à tous les sélecteurs de la page, puis se rendre compte qu'il est vide et ne pas agir sur elle? (horriblement inefficace)
  2. Réaliser qu'il est vide et ne pas agir sur les sélecteurs (assez efficace)
  3. Aucun de ce qui précède.

Toute idée serait grandement appréciée.

Cheers, Ad.

Répondre

1

Je ne sais pas. :) Cela peut dépendre du navigateur, même si tous sont dans une course pour optimiser la vitesse autant que possible. Je suppose qu'ils auraient pensé à ça. Mais comme vous ne pouvez jamais être sûr, je recommanderais de mettre les hacks d'IE dans un fichier css séparé et d'utiliser des commentaires conditionnels en HTML pour inclure ces fichiers css conditionnellement.

Mais en faisant cela, je pense que vous devriez également fournir ces fichiers avec un en-tête 'Expires' qui leur permet d'être mis en cache pendant une période plus longue (comme un jour?). Lorsque vous ne fournissez pas ces en-têtes, IE invalidera le fichier mis en cache beaucoup plus tôt que la plupart des autres navigateurs, ce qui pourrait provoquer plus de demandes (pour ces fichiers css séparés) sur votre serveur lorsqu'un visiteur navigue sur plusieurs pages. Habituellement, ce ne sera pas un gros problème, mais si vous parlez d'optimisation comme cela, cela pourrait être un problème.

1

En supposant un navigateur obéit à la specification, il ignore simplement la propriété *zoom:

Les agents utilisateurs doivent ignorer une déclaration avec une propriété inconnue. Par exemple, si la feuille de style est:

h1 { color: red; rotation: 70minutes } 

l'agent utilisateur traitera cela comme si la feuille de style avait été

h1 { color: red } 

Quant à ce qui se passe si un tel navigateur trouve un bloc de déclaration vide, je ne sais pas. Je n'ai pas vu le scénario mentionné dans la spécification, donc je suppose que c'est un détail de mise en œuvre et il diffère navigateur par navigateur.