Pas. La seule façon que les pseudo-éléments peuvent hériter des valeurs de la mère de leur élément générateur de est lorsque l'élément qui génère lui-même est également hériter de son parent.
C'est parce que l'héritage se produit à partir d'un parent à un enfant, à un niveau à la fois. Pour l'héritage de travailler sur plusieurs niveaux de descendants, chaque descendant doit hériter.
Cela ne fonctionnera pas, car même si les pseudo-éléments ont des valeurs de inherit, l'élément générateur, qui est, .parent > .child, n'hérite pas de .parent. Au lieu de cela, ils héritent de la valeur par défaut de auto pour les deux propriétés.
Pour que cela fonctionne, vous aurez besoin d'avoir .parent > .child héritent ainsi:
Je sais que cette question est assez vieux, mais je suis tombé sur elle aujourd'hui. Selon http://www.w3.org/TR/CSS21/generate.html, l'on a accepté la réponse n'est pas exacte:
La :before et :après les pseudo-éléments héritent d'aucun successible, les propriétés de l'élément dans l'arborescence du document à laquelle ils sont attachés.
J'ai juste essayé d'hériter de largeur et cela a fonctionné.
Je vais modifier ma réponse à préciser. Je pense que c'était trop court, et par conséquent, il pourrait avoir été source de confusion. Quand j'ai posé la question, je ne comprends pas comment les ::before et ::after éléments pseudo travaillé. Prenez cette situation: divA > divB::after - le but de ma question était de savoir si divB:after could inherit divA's properties. In my phrasing of the question: _parent element_ referred to divA " et élément visée à divB. J'espère que ma question a été interprétée de cette manière. merci @BoltClock, c'est beaucoup plus clair maintenant. AKG, je pense que votre question était à l'origine bien compris, mais tout est plus claire maintenant de toute façon 🙂
Concernant ces réponses, je viens de heurter l'aspect de la transformation. Il peut ressembler à de l'héritage; j'espère que cela aide quelqu'un.
Avoir ceci:
<divclass="box"><divclass="frame"></div></div>
et cette transformation pour frame:
transform: rotate(10deg);
Puis le frame:before et frame:after sont également transformées. Pourtant, ils n'ont pas les propriétés de frame, comme width et height, qui est, comme expliqué ci-dessus. Exemple complet voir ici:
Sur ce violon, il y a trois carrés imbriqués, chaque rotation de 10°, mais la transformation de la définition est uniquement définie pour le frame, pas pour frame:after ni frame:before.
C'est un piège de penser les transformations ne sont pas "hérité", comme tout le reste est ni. La transformation a de l'influence dans un autre contexte.
Pas. La seule façon que les pseudo-éléments peuvent hériter des valeurs de la mère de leur élément générateur de est lorsque l'élément qui génère lui-même est également hériter de son parent.
C'est parce que l'héritage se produit à partir d'un parent à un enfant, à un niveau à la fois. Pour l'héritage de travailler sur plusieurs niveaux de descendants, chaque descendant doit hériter.
Considérez, par exemple, le code HTML suivant:
Avec le code CSS suivant:
Cela ne fonctionnera pas, car même si les pseudo-éléments ont des valeurs de
inherit
, l'élément générateur, qui est,.parent > .child
, n'hérite pas de.parent
. Au lieu de cela, ils héritent de la valeur par défaut deauto
pour les deux propriétés.Pour que cela fonctionne, vous aurez besoin d'avoir
.parent > .child
héritent ainsi:OriginalL'auteur BoltClock
Je sais que cette question est assez vieux, mais je suis tombé sur elle aujourd'hui. Selon http://www.w3.org/TR/CSS21/generate.html, l'on a accepté la réponse n'est pas exacte:
J'ai juste essayé d'hériter de largeur et cela a fonctionné.
Quand j'ai posé la question, je ne comprends pas comment les
::before
et::after
éléments pseudo travaillé. Prenez cette situation:divA > divB::after
- le but de ma question était de savoir sidivB:after could inherit
divA's properties. In my phrasing of the question: _parent element_ referred to
divA " et élément visée àdivB
. J'espère que ma question a été interprétée de cette manière.merci @BoltClock, c'est beaucoup plus clair maintenant. AKG, je pense que votre question était à l'origine bien compris, mais tout est plus claire maintenant de toute façon 🙂
OriginalL'auteur joe
Concernant ces réponses, je viens de heurter l'aspect de la transformation. Il peut ressembler à de l'héritage; j'espère que cela aide quelqu'un.
Avoir ceci:
et cette transformation pour
frame
:Puis le
frame:before
etframe:after
sont également transformées. Pourtant, ils n'ont pas les propriétés deframe
, commewidth
etheight
, qui est, comme expliqué ci-dessus. Exemple complet voir ici:http://jsfiddle.net/chafpgwt/1/
Sur ce violon, il y a trois carrés imbriqués, chaque rotation de 10°, mais la transformation de la définition est uniquement définie pour le
frame
, pas pourframe:after
niframe:before
.C'est un piège de penser les transformations ne sont pas "hérité", comme tout le reste est ni. La transformation a de l'influence dans un autre contexte.
OriginalL'auteur peter_the_oak