Digamos que tengo el archivo 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>
Quiero alinear de alguna manera la parte superior de a
y b
. En realidad, ¡quiero que mi posicionamiento esté de acuerdo con el en roofline
lugar de baseline
!
svg
vertical-alignment
w3c
SeMeKh
fuente
fuente
Respuestas:
La
alignment-baseline
propiedad es lo que está buscando, puede tomar los siguientes valoresDescripción de w3c
Fuente W3C
Desafortunadamente, aunque esta es la forma "correcta" de lograr lo que busca, parece que Firefox no ha implementado muchos de los atributos de presentación para el Módulo de texto SVG ( Documentación MDN 'SVG en Firefox' )
fuente
alignment-baseline: central
hace no trabajo para el IVS en Firefox, y que parece ser por diseño.dominant-baseline: central
funciona en todos los navegadores que he probado hasta ahora, como se indica en esta respuesta: stackoverflow.com/a/15997503/1450294Según la especificación SVG,
alignment-baseline
solo se aplica a<tspan>
,<textPath>
,<tref>
y<altGlyph>
. Tengo entendido que se utiliza para compensar a los del<text>
objeto que se encuentra sobre ellos. Creo que lo que estás buscando esdominant-baseline
.Posibles valores de
dominant-baseline
son:Verifique la recomendación del W3C para la propiedad de línea de base dominante para obtener más información sobre cada valor posible.
fuente
element.hasAttribute('dominant-baseline')
, y si devuelve falso, apliquedy=-0.4em
como se describe en esta respuesta stackoverflow.com/a/29089222/2296470attr ("línea de base dominante", "central")
fuente
Si está probando esto en IE, la línea base dominante y la línea base de alineación no son compatibles.
La forma más efectiva de centrar texto en IE es usar algo como esto con "dy":
El valor negativo lo desplazará hacia arriba y un valor positivo de dy lo desplazará hacia abajo. He encontrado que usar -.4em me parece un poco más centrado verticalmente que -.5em, pero usted será el juez de eso.
fuente
Después de mirar la Recomendación SVG , he llegado a la comprensión de que las propiedades de la línea de base están destinadas a posicionar el texto en relación con otro texto, especialmente cuando se mezclan diferentes fuentes o idiomas. Si desea colocar el texto para que esté arriba,
y
entonces necesita usarlody = "y + the height of your text"
.fuente
"<list-of-lengths>"
opción (vinculada) por ejemplo (permite la manipulación por personaje)