Digamos que eu tenho o arquivo 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>
Eu quero de alguma forma alinhar o topo de a
e b
. Na verdade, eu quero que meu posicionamento seja de acordo com o roofline
invés de baseline
!
svg
vertical-alignment
w3c
SeMeKh
fonte
fonte
Respostas:
A
alignment-baseline
propriedade é o que você está procurando e pode assumir os seguintes valoresDescrição do w3c
Fonte W3C
Infelizmente, embora essa seja a maneira "correta" de alcançar o que você deseja, parece que o Firefox não implementou muitos atributos de apresentação para o SVG Text Module ( documentação MDN 'SVG no Firefox' )
fonte
alignment-baseline: central
faz não trabalho para SVGs no Firefox, e que parece ser por design.dominant-baseline: central
funciona em todos os navegadores que eu tentei até agora, como indicado nesta resposta: stackoverflow.com/a/15997503/1450294De acordo com SVG spec,
alignment-baseline
só se aplica a<tspan>
,<textPath>
,<tref>
e<altGlyph>
. Meu entendimento é que ele é usado para compensar aqueles do<text>
objeto acima deles. Eu acho que o que você está procurando édominant-baseline
.Os possíveis valores de
dominant-baseline
são:Verifique a recomendação do W3C para a propriedade de linha de base dominante para obter mais informações sobre cada valor possível.
fonte
element.hasAttribute('dominant-baseline')
e, se ele retornar falso, apliquedy=-0.4em
conforme descrito nesta resposta stackoverflow.com/a/29089222/2296470attr ("linha de base dominante", "central")
fonte
Se você estiver testando isso no IE, a linha de base dominante e a linha de base de alinhamento não são suportadas.
A maneira mais eficaz de centralizar o texto no IE é usar algo assim com "dy":
O valor negativo mudará para cima e um valor positivo de dy mudará para baixo. Descobri que usar -.4em parece um pouco mais centralizado verticalmente para mim do que -.5em, mas você será o juiz disso.
fonte
Depois de examinar a Recomendação SVG, entendi que as propriedades da linha de base são destinadas a posicionar o texto em relação a outro texto, especialmente ao misturar fontes e idiomas diferentes. Se você deseja posicionar o texto para que fique no topo, é
y
necessário usá-lody = "y + the height of your text"
.fonte
"<list-of-lengths>"
opção (vinculada) por exemplo (permite manipulação por caractere)