Katakanlah saya memiliki file 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>
Saya ingin menyelaraskan bagian atas a
dan b
. Sebenarnya, saya ingin posisi saya sesuai dengan roofline
alih - alih baseline
!
svg
vertical-alignment
w3c
SeMeKh
sumber
sumber
Jawaban:
The
alignment-baseline
properti adalah apa yang Anda cari untuk itu dapat mengambil nilai-nilai berikutDeskripsi dari w3c
Sumber W3C
Sayangnya, meskipun ini adalah cara yang "benar" untuk mencapai apa yang Anda cari, tampaknya Firefox belum menerapkan banyak atribut presentasi untuk Modul Teks SVG ( 'SVG in Firefox' MDN Documentation )
sumber
alignment-baseline: central
tidak tidak bekerja untuk SVGs di FireFox, dan itu tampaknya dengan desain.dominant-baseline: central
berfungsi di setiap browser yang saya coba sejauh ini, seperti yang ditunjukkan dalam jawaban ini: stackoverflow.com/a/15997503/1450294Menurut SVG spec,
alignment-baseline
hanya berlaku untuk<tspan>
,<textPath>
,<tref>
dan<altGlyph>
. Pemahaman saya adalah bahwa ini digunakan untuk mengimbangi mereka dari<text>
objek di atas mereka. Saya pikir apa yang Anda caridominant-baseline
.Nilai yang mungkin dari
dominant-baseline
adalah:Periksa rekomendasi W3C untuk properti baseline-dominan untuk informasi lebih lanjut tentang setiap nilai yang mungkin.
sumber
element.hasAttribute('dominant-baseline')
, dan jika mengembalikan false,dy=-0.4em
seperti yang dijelaskan dalam jawaban ini stackoverflow.com/a/29089222/2296470attr ("dominan-baseline", "central")
sumber
Jika Anda menguji ini di IE, garis dasar dominan dan garis dasar tidak didukung.
Cara paling efektif untuk memusatkan teks di IE adalah menggunakan sesuatu seperti ini dengan "dy":
Nilai negatif akan menggesernya ke atas dan nilai positif dari dy akan menggesernya ke bawah. Saya menemukan menggunakan -.4em tampaknya sedikit lebih terpusat pada saya daripada -.5em, tetapi Anda akan menjadi hakim untuk itu.
sumber
Setelah melihat Rekomendasi SVG, saya sampai pada pemahaman bahwa properti dasar dimaksudkan untuk memposisikan teks relatif terhadap teks lain, terutama ketika mencampur berbagai font dan atau bahasa. Jika Anda ingin memposisikan teks sehingga berada di atas
y
maka Anda perlu menggunakannyady = "y + the height of your text"
.sumber
"<list-of-lengths>"
misalnya (memungkinkan manipulasi per karakter)