Angenommen, ich habe die SVG-Datei:
<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>
Ich möchte irgendwie die Oberseite von a
und ausrichten b
. Eigentlich möchte ich, dass meine Positionierung der entspricht, roofline
anstatt baseline
!
svg
vertical-alignment
w3c
SeMeKh
quelle
quelle
Antworten:
Die
alignment-baseline
Eigenschaft ist das, wonach Sie suchen. Sie kann die folgenden Werte annehmenBeschreibung von w3c
W3C-Quelle
Obwohl dies der "richtige" Weg ist, um das zu erreichen, wonach Sie suchen, hat Firefox leider nicht viele der Präsentationsattribute für das SVG-Textmodul implementiert ( MDN-Dokumentation "SVG in Firefox" ).
quelle
alignment-baseline: central
funktioniert nicht für SVGs in FireFox, und das scheint beabsichtigt zu sein.dominant-baseline: central
funktioniert in jedem Browser, den ich bisher ausprobiert habe, wie in dieser Antwort angegeben: stackoverflow.com/a/15997503/1450294Nach SVG - Spezifikation,
alignment-baseline
gilt nur für<tspan>
,<textPath>
,<tref>
und<altGlyph>
. Mein Verständnis ist, dass es verwendet wird, um diese von dem<text>
Objekt über ihnen zu versetzen . Ich denke, was Sie suchen, istdominant-baseline
.Mögliche Werte von
dominant-baseline
sind:Weitere Informationen zu jedem möglichen Wert finden Sie in der W3C-Empfehlung für die Eigenschaft " Dominant-Baseline" .
quelle
element.hasAttribute('dominant-baseline')
Wenn sie falsch zurückgibt, gilt diesdy=-0.4em
wie in dieser Antwort beschrieben. Stackoverflow.com/a/29089222/2296470attr ("dominante Basislinie", "zentral")
quelle
Wenn Sie dies im IE testen, werden Dominant-Baseline und Alignment-Baseline nicht unterstützt.
Der effektivste Weg, um Text im IE zu zentrieren, besteht darin, mit "dy" so etwas zu verwenden:
Der negative Wert verschiebt es nach oben und ein positiver Wert von dy verschiebt es nach unten. Ich habe festgestellt, dass die Verwendung von -.4em für mich vertikal etwas zentrierter erscheint als -.5em, aber Sie werden das beurteilen.
quelle
Nachdem ich mir die SVG-Empfehlung angesehen habe, bin ich zu dem Verständnis gekommen, dass die Baseline-Eigenschaften dazu gedacht sind, Text relativ zu anderem Text zu positionieren, insbesondere beim Mischen verschiedener Schriftarten und / oder Sprachen. Wenn Sie Text so positionieren möchten, dass er oben ist
y
, müssen Sie ihn verwendendy = "y + the height of your text"
.quelle
"<list-of-lengths>"
Option zum Beispiel nicht bewusst (erlaubt die Manipulation pro Charakter)