Supposons que je veuille décorer des liens vers certains types de fichiers à l'aide d'une image. Je pourrais déclarer mes liens comme
<a href='foo.pdf' class='pdflink'>A File!</a>
puis CSS comme
.pdflink:after { content: url('/images/pdf.png') }
Maintenant, cela fonctionne très bien, sauf si ce pdf.png
n'est pas la bonne taille pour mon texte de lien.
J'aimerais pouvoir dire au navigateur de redimensionner l' :after
image, mais je ne peux pas pour la vie de moi trouver la bonne syntaxe. Ou est-ce comme des images d'arrière-plan, où le redimensionnement n'est tout simplement pas possible?
ETA: Je penche pour a) redimensionner l'image source pour qu'elle soit de la "bonne" taille, côté serveur et / ou b) changer le balisage pour fournir simplement une balise IMG en ligne. J'essayais d'éviter ces deux choses, mais elles semblent être plus compatibles que d'essayer de faire des choses uniquement avec CSS. La réponse à ma question initiale semble être "vous pouvez en quelque sorte le faire, parfois".
la source
Réponses:
Le réglage du
background-size
est autorisé. Cependant, vous devez toujours spécifier la largeur et la hauteur du bloc.Voir le tableau de compatibilité complet sur le MDN .
la source
:after
du tout. Il n'est pas pris en charge sous IE8.width: 10px; height: 20px;
pour voir l'image.background-image
propriété spécifique , le simplebackground
ne fonctionnera pas.:before
) j'avais aussi besoinposition: absolute
, etleft: -10px
.Notez que le
:after
pseudo-élément est une boîte, qui à son tour contient l'image générée. Il n'y a aucun moyen de styliser l'image, mais vous pouvez styliser la boîte.Ce qui suit n'est qu'une idée, et la solution ci - dessus est plus pratique.
http://jsfiddle.net/Nwupm/
Inconvénients: vous devez connaître les dimensions intrinsèques de l'image, et cela vous laisse un espace, dont je ne peux pas me débarrasser de l'ATM.
la source
position: absolute
de l'ordre pour arrivertransform: scale(0.5)
à travailler réellement. J'ai également dû mettreposition: relative
l'élément "parent" (le propriétaire du:after
pseudo) pour raison. De plus, j'ai dû ajoutertranslate(-16px, -16px)
à ma transformation pour positionner correctement l'icône 16x16. Le aposition: absolute
également l'avantage d'éliminer le problème des espaces blancs.Puisque mon autre réponse n'était évidemment pas bien comprise, voici une deuxième tentative:
Il existe deux approches pour répondre à la question.
Pratique (montrez-moi juste la putain de photo!)
Oubliez le
:after
pseudo-sélecteur, et optez pour quelque chose commeThéorique
La question est: pouvez-vous styliser le contenu généré ? La réponse est: non, vous ne pouvez pas. Il y a eu une longue discussion sur la liste de diffusion du W3C sur ce problème, mais aucune solution jusqu'à présent.
Le contenu généré est rendu dans une zone générée et vous pouvez styliser cette zone, mais pas le contenu en tant que tel . Différents navigateurs montrent un comportement très différent
(depuis http://lists.w3.org/Archives/Public/www-style/2011Nov/0451.html )
De même, les navigateurs affichent des résultats très différents sur des choses comme http://jsfiddle.net/Nwupm/1/ , où plus d'un élément est généré. Gardez à l'esprit que CSS3 est encore au stade de développement précoce, et ce problème n'a pas encore été résolu.
la source
Vous devez utiliser l'arrière-plan au lieu de l'image.
la source
diplay: block;
n'a aucun effetpositionin fonctionne également de manière très étrange en fonction des principes fondamentaux du frontend, alors soyez prudent
la source
Voici une autre solution (qui fonctionne): redimensionnez simplement vos images à la taille souhaitée :)
vous avez besoin de pdf.png pour être 20px * 10px pour que cela fonctionne. Les 20px / 10px dans le CSS sont là pour donner la taille du bloc afin que les éléments qui viennent après le bloc ne soient pas tous gâchés avec l'image
N'oubliez pas de conserver une copie de l'image brute dans sa taille d'origine
la source
la source
Vous pouvez utiliser la
zoom
propriété. Vérifiez ce jsfiddlela source
Vous pouvez modifier la hauteur ou la largeur de l' élément Avant ou Après comme ceci:
la source
J'ai utilisé cette largeur de contrôle de taille de police
la source
De nos jours, avec flexbox, vous pouvez grandement simplifier votre code et ajuster seulement 1 paramètre selon vos besoins:
Maintenant, vous pouvez simplement ajuster la largeur de l'élément et la hauteur s'ajustera automatiquement, augmentez / diminuez la largeur jusqu'à ce que la hauteur de l'élément soit au nombre dont vous avez besoin.
la source
url(//placeimg.com/800/200/arch)
la source