Solution actuelle (IE8+, FF, Chrome testés)
Voyez ce violon.
CSS pertinent
.prevNext {
text-align: justify;
}
.prevNext a {
display: inline-block;
position: relative;
top: 1.2em; /* your line-height */
}
.prevNext:before{
content: '';
display: block;
width: 100%;
margin-bottom: -1.2em; /* your line-height */
}
.prevNext:after {
content: '';
display: inline-block;
width: 100%;
}
Explication
Le site display: block
sur le :before
avec la marge inférieure négative fait remonter les lignes de texte d'une hauteur de ligne, ce qui élimine la ligne supplémentaire, mais déplace le texte. Ensuite, avec l'élément position: relative
sur le inline-block
éléments, le déplacement est neutralisé, mais sans rajouter la ligne supplémentaire.
Bien que css ne puisse pas accéder directement à un line-height
"unité" en soi, l'utilisation de em
dans le margin-bottom
et top
s'adapte facilement à tout type de line-height
donné comme l'un des valeurs du multiplicateur . Donc 1.2
, 120%
ou 1.2em
sont tous égal en calcul par rapport à line-height
qui fait appel à l'utilisation de em
un bon choix ici, car même si line-height: 1.2
est fixé, alors 1.2em
pour margin-bottom
et top
correspondra. Un bon codage pour normaliser l'apparence d'un site signifie qu'à un moment donné line-height
doit être défini explicitement, donc si l'une des méthodes de multiplicateur est utilisée, alors l'équivalent em
donnera la même valeur que l'unité line-height
. Et si line-height
est fixé à un non em
longueur, comme px
que l'on pourrait mettre à la place.
Il est certain qu'une variable ou un mixin utilisant un préprocesseur css tel que LESS ou SCSS pourrait aider à faire correspondre ces valeurs aux valeurs appropriées. line-height
ou un javascript pourrait être utilisé pour lire dynamiquement ces données, mais en réalité, l'option line-height
doit être connu dans le contexte de son utilisation et les réglages appropriés doivent être effectués.
MISE À JOUR pour le problème du texte minifié (sans espaces)
Dans le commentaire de Kubi, il est indiqué qu'une minification du html qui supprime les espaces entre les caractères <a>
éléments fait échouer la justification . A pseudo-espace dans le <a>
n'aide pas (mais c'est normal, car l'espace se déroule à l'intérieur de la zone de l'entreprise). inline-block
elmeent), un <wbr>
ajouté entre les <a>
Les tags n'aident pas (probablement parce qu'il n'est pas nécessaire de faire une pause jusqu'à la ligne suivante), donc si la minification est souhaitée, alors la solution est un caractère d'espace insécable codé en dur.
--autres caractères d'espacement comme espace réduit et en espace n'a pas fonctionné (étonnamment).
Solution propre future possible
Une solution dans laquelle webkit
est en retard sur son temps (au moment où j'écris ces lignes) est :
.prevNext {
text-align: justify;
-moz-text-align-last: justify;
-webkit-text-align-last: justify; /* not implemented yet */
text-align-last: justify; /* IE */
}
qui fonctionne dans FF 12.0+ et IE8+. (bogué dans IE7). Parce qu'il n'est pas supporté par webkit
encore, il ne s'agit en fait que d'une solution partielle . Cependant, j'ai pensé que je devais le poster car il peut être utile à certains.