J'essaie de centrer le lien avec l'image, mais n'arrive pas à déplacer le contenu verticalement de quelque manière que ce soit.
<h4>More Information</h4>
<a href="#" class="pdf">File Name</a>
L'icône est 22 x 22px
.pdf {
font-size: 12px;
}
.pdf:before {
padding:0 5px 0 0;
content: url(../img/icon/pdf_small.png);
}
.pdf:after {
content: " ( .pdf )";
font-size: 10px;
}
.pdf:hover:after {
color: #000;
}
Répondu à ma propre question après avoir lu votre conseil sur l'attribut CSS vertical-align. Merci pour le conseil!
.pdf:before {
padding: 0 5px 0 0;
content: url(../img/icon/pdf_small.png);
vertical-align: -50%;
}
Je ne suis pas un expert en CSS, mais que se passe-t-il si vous mettez vertical-align: middle;
dans votre directive .pdf:before
?
Vous pouvez également utiliser des tables pour y parvenir, comme:
.pdf {
display: table;
}
.pdf:before {
display: table-cell;
vertical-align: middle;
}
Voici un exemple: https://jsfiddle.net/ar9fadd0/2/
EDIT: Vous pouvez également utiliser flex pour accomplir ceci:
.pdf {
display: flex;
}
.pdf:before {
display: flex;
align-items: center;
}
Voici un exemple: https://jsfiddle.net/ctqk0xq1/1/
Je pense qu'une approche plus propre consiste à hériter de l'alignement vertical:
En html:
<div class="shortcut"><a href="#">Download</a></div>
Et en css:
.shortcut {
vertical-align: middle;
}
.shortcut > a:after {
vertical-align: inherit;
{
De cette façon, l’icône s’alignera correctement dans n’importe quelle combinaison résolution/taille de police. Idéal pour une utilisation avec les polices d'icônes.
Déconner avec l'attribut line-height devrait faire l'affaire. Je n'ai pas testé cela, donc la valeur exacte peut ne pas être exacte, mais commencez par 1.5em et ajustez-la par incréments de 0.1 jusqu'à ce qu'elle soit alignée.
.pdf{ line-height:1.5em; }
Je viens de trouver une solution intéressante, je pense. L'astuce consiste à définir le line-height
de l'image (ou de son contenu) height
.
Utilisation de CSS:
div{
line-height: 26px; /* height of the image in #submit span:after */
}
span:after{
content: url('images/forward.png');
vertical-align: bottom;
}
Cela fonctionnerait probablement aussi sans la durée.
J'ai passé beaucoup de temps à essayer de résoudre ce problème aujourd'hui et je n'arrivais pas à faire fonctionner les choses en utilisant line-height ou vertical-align. La solution la plus simple que j'ai pu trouver consistait à configurer le <a/> pour qu'il soit relativement bien positionné de manière à ce qu'il contienne des absolus, et le: après être positionné de manière à le retirer complètement du flux.
a{
position:relative;
padding-right:18px;
}
a:after{
position:absolute;
content:url(image.png);
}
L'image après semblait se centrer automatiquement dans ce cas, au moins sous Firefox/Chrome. Cela peut être un peu plus compliqué pour les navigateurs ne prenant pas en charge: après, en raison de l'espacement excessif sur le <a/>.
J'avais un problème similaire. Voici ce que j'ai fait. Puisque l'élément que je tentais de centrer verticalement avait height = 60px, j'ai réussi à le centrer verticalement en utilisant:
en haut: calc (50% - 30px);
L'utilisation de boîtes flexibles a fait l'affaire pour moi:
.pdf:before {
display: flex;
align-items: center;
justify-content: center;
}