Disons que j'ai le fichier SVG:
<svg width="1024" height="768" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<text x='20' y='60' style="font-size: 60px">b</text>
<text x='100' y='60' style="font-size: 60px">a</text>
</svg>
Je veux en quelque sorte aligner le haut de a
et b
. En fait, je veux que mon positionnement soit en fonction de la roofline
place de baseline
!
svg
vertical-alignment
w3c
SeMeKh
la source
la source
Réponses:
La
alignment-baseline
propriété correspond à ce que vous recherchez, elle peut prendre les valeurs suivantesDescription du w3c
Source W3C
Malheureusement, bien que ce soit la manière "correcte" d'atteindre ce que vous recherchez, il semblerait que Firefox n'a pas implémenté beaucoup d'attributs de présentation pour le module de texte SVG ( documentation MDN 'SVG dans Firefox' )
la source
alignment-baseline: central
ne fonctionne pas pour les SVG dans FireFox, et cela semble être intentionnel.dominant-baseline: central
fonctionne dans tous les navigateurs que j'ai essayés jusqu'à présent, comme indiqué dans cette réponse: stackoverflow.com/a/15997503/1450294Selon les spécifications SVG,
alignment-baseline
applique uniquement<tspan>
,<textPath>
,<tref>
et<altGlyph>
. Je crois comprendre qu'il est utilisé pour compenser ceux de l'<text>
objet au-dessus d'eux. Je pense que ce que vous recherchez estdominant-baseline
.Les valeurs possibles de
dominant-baseline
sont:Consultez la recommandation du W3C pour la propriété dominante-baseline pour plus d'informations sur chaque valeur possible.
la source
element.hasAttribute('dominant-baseline')
, et si elle renvoie false, appliquezdy=-0.4em
comme indiqué dans cette réponse stackoverflow.com/a/29089222/2296470attr ("ligne de base dominante", "central")
la source
Si vous testez cela dans IE, la ligne de base dominante et la ligne de base d'alignement ne sont pas prises en charge.
Le moyen le plus efficace de centrer du texte dans IE est d'utiliser quelque chose comme ceci avec "dy":
La valeur négative la décale vers le haut et une valeur positive de dy la décale vers le bas. J'ai trouvé que l'utilisation de -.4em me semble un peu plus centrée verticalement que -.5em, mais vous en serez le juge.
la source
Après avoir examiné la recommandation SVG, j'ai compris que les propriétés de base sont destinées à positionner le texte par rapport à d'autres textes, en particulier lors du mélange de différentes polices et / ou langues. Si vous souhaitez afficher le texte de manière à ce qu'il soit en haut,
y
vous devez l'utiliserdy = "y + the height of your text"
.la source
"<list-of-lengths>"
option (liée) par exemple (permet la manipulation par caractère)