170 votes

Pseudo-classes CSS avec styles en ligne

Est-il possible d'avoir des pseudo-classes utilisant des styles inline?


Exemple:

 <a href="http://www.google.com" style="hover:text-decoration:none;">Google</a>
 

Je sais que le code HTML ci-dessus ne fonctionnera pas, mais y a-t-il quelque chose de similaire qui le fera?


PS Je sais que je devrais utiliser une feuille de style externe, et je le fais. J'étais juste curieux de savoir si cela pouvait être fait en utilisant des styles inline.

133voto

BoltClock Points 249668

Non, ce n'est pas possible. Dans les documents qui rendent l'utilisation de CSS, un inline style d'attribut ne peut contenir que des déclarations de propriété; le même jeu d'instructions qui apparaît dans chaque jeu de règles dans une feuille de style. À partir des Attributs de Style spec:

La valeur de l'attribut style doit correspondre à la syntaxe du contenu d'un CSS bloc de déclaration (à l'exclusion de la délimitation des accolades), dont la grammaire formelle est donnée ci-dessous dans les conditions et les conventions de la CSS de base de la grammaire:

declaration-list
  : S* declaration? [ ';' S* declaration? ]*
  ;

Ni les sélecteurs, ni à des règles ni aucun autre CSS construire sont autorisés.

Pensez à des styles en ligne comme les styles appliqués à l'anonymat d'un super-précis sélecteur d'ID: ces styles ne s'appliquent qu'à un même élément avec l' style d'attribut. (Ils prennent la priorité sur un sélecteur d'ID dans une feuille de style trop, si cet élément a que ID.) Techniquement, il ne fonctionne pas comme ça; c'est juste pour vous aider à comprendre pourquoi l'attribut ne supporte pas la pseudo-classe ou pseudo-élément styles (il a plus à voir avec la façon dont les pseudo-classes et pseudo-éléments de fournir des abstractions de l'arborescence des documents qui ne peuvent pas être exprimées dans la langue du document).

Notez que les styles en ligne participer à la même cascade comme sélecteurs dans des ensembles de règles, et de prendre la plus haute priorité dans la cascade (!important nonobstant). Donc ils l'emportent même sur la pseudo-classe unis. En permettant à des pseudo-classes ou de tout autre sélecteurs dans des styles en ligne seraient éventuellement introduire un nouveau niveau de la cascade, et, avec elle, une nouvelle série de complications.

Notez également que de très anciennes révisions des Attributs de Style spec a l'origine, permettant de proposer cela, mais il a été abandonné, sans doute pour la raison donnée ci-dessus, ou parce que la mise en œuvre de ce n'était pas une option viable.

55voto

mVChr Points 26738

Pas de CSS, mais en ligne:

 <a href="#" 
   onmouseover = "this.style.textDecoration = 'none'"
   onmouseout  = "this.style.textDecoration = 'underline'">Hello</a>
 

Voir exemple →

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X