J'essaie actuellement de me concentrer sur un problème, mais je ne parviens pas à le résoudre.
Dans une liste non ordonnée pour une navigation, je veux ajouter une icône avant chaque élément de la liste via la pseudo classe css before.
<ul class="list">
<li class="list-item"><a href="#">one</a></li>
<li class="list-item"><a href="#">two</a></li>
<li class="list-item"><a href="#">three</a></li>
<li class="list-item"><a href="#">four</a></li>
</ul>
Ma première idée a été de donner aux deux éléments (l'icône et la balise a) display:inline-block et d'aligner l'icône avec vertical-align:middle. Avec quelques petits ajustements (margin-bottom), cela fonctionne bien dans chrome :
.list-item {
display: block;
font-weight: bold;
text-transform: uppercase;
margin: 10px 0;
padding-bottom: 10px;
border-bottom: 1px solid #F3F3F3;
height:1.5em;
overflow:hidden;
}
.list-item:before {
display: inline-block;
content: '';
vertical-align: middle;
background-color: red;
width: 5px;
height: 7px;
margin: 0 4px 0.125em 5px;
}
.list-item a {
display: inline-block;
overflow: hidden;
line-height: 1.5;
height:1.5em;
}
Mais lorsque vous chargez la page dans firefox, l'icône se trouve tout en bas. http://jsfiddle.net/pUhPB/4/
J'ai essayé ce qui me semble être toutes les combinaisons possibles d'affichage, d'alignement vertical et de valeurs de marge pour y parvenir dans les deux navigateurs, et finalement, si je donne à la balise a un alignement vertical : milieu et à l'icône un alignement vertical : ligne de base, cela semble fonctionner :
.list-item {
display: block;
font-weight: bold;
text-transform: uppercase;
margin: 10px 0;
padding-bottom: 10px;
border-bottom: 1px solid #F3F3F3;
height:1.5em;
overflow:hidden;
}
.list-item:before {
display: inline-block;
content: '';
vertical-align: baseline;
background-color: red;
width: 5px;
height: 7px;
margin: 0 4px 0 5px;
}
.list-item a {
display: inline-block;
vertical-align:middle;
overflow: hidden;
line-height: 1.5;
height:1.5em;
}
Mais je ne comprends pas. Pourquoi la première version ne fonctionne-t-elle pas ? Pour moi, elle semble bien plus logique que la version qui fonctionne réellement. Et lequel des deux navigateurs ne rend pas les éléments de la bonne manière ?
J'ai déjà trouvé une solution qui semble fonctionner pour moi, ce n'est donc pas une question très urgente, mais cela me gêne de ne pas comprendre le cœur de mon problème (et la solution), je serais donc vraiment reconnaissant si quelqu'un pouvait m'éclairer à ce sujet.
merci