Je me demande simplement s'il est possible de faire en sorte que la content
propriété CSS insère du code html à la place :before
ou :after
un élément comme:
.header:before{
content: '<a href="#top">Back</a>';
}
ce serait assez pratique ... Cela pourrait être fait via Javascript mais utiliser css pour cela faciliterait vraiment la vie :)
html
css
pseudo-element
css-content
zanona
la source
la source
Réponses:
Malheureusement, ce n'est pas possible. Par la spécification :
En d'autres termes, pour les valeurs de chaîne, cela signifie que la valeur est toujours traitée littéralement. Il n'est jamais interprété comme du balisage, quelle que soit la langue du document utilisée.
Par exemple, en utilisant le CSS donné avec le code HTML suivant:
... entraînera la sortie suivante:
<a href="#top"> Retour </a> Titre
la source
url
attributs, l'ajout d'un lien ne serait pas si différent dans cette perspective.<img>
), elles sont simplement dessinées sur des éléments existants, donc en appliquant des images d'arrière-plan ou de liste, vous ne modifiez pas vraiment le DOM.url()
place, comme avec toute autre image.Comme presque noté dans les commentaires de la réponse de @ BoltClock, dans les navigateurs modernes , vous pouvez réellement ajouter du balisage html aux pseudo-éléments en utilisant le (
url()
) en combinaison avec l'<foreignObject>
élément svg .Vous pouvez soit spécifier une URL pointant vers un fichier svg réel, soit la créer avec une version dataURI (
data:image/svg+xml; charset=utf8, + encodeURIComponent(yourSvgMarkup)
)Mais notez qu'il s'agit principalement d'un hack et qu'il existe de nombreuses limitations:
document.styleSheets
. pour cette partie,DOMParser
etXMLSerializer
peut aider .<img>
balises, cela ne fonctionnera pas dans les pseudo-éléments (au moins à ce jour, je ne sais pas si c'est spécifié quelque part où cela ne devrait pas, donc cela peut être une fonctionnalité non encore implémentée).Maintenant, une petite démonstration d'un balisage html dans un pseudo élément:
la source
url('/relativePathToMySvg/mySvg.svg')
et cela n'a pas fonctionné/root/css/yourFile.css
, alors un funcIRI relatif commeyourFile.svg
pointera vers/root/css/yourFile.svg/
. Mais, je pense que je me souviens que certains UA précédents avaient un bogue et le rendaient par rapport à la baseURI du document. Donc, le moyen le plus sûr consiste simplement à utiliser un chemin absolu.content: url('../../images/como-funciona.svg');
et cela fonctionne bienDans les médias paginés CSS3, cela est possible en utilisant
position: running()
etcontent: element()
.Exemple tiré du brouillon du module de contenu généré par CSS pour les médias paginés :
.runner peut être n'importe quel élément et
heading
est un nom arbitraire pour l'emplacement.EDIT: pour clarifier, il n'y a fondamentalement pas de support de navigateur, donc cela devait principalement servir de référence future / en plus des «réponses pratiques» déjà données.
la source