Прежде всего, пример MDN alignment-baseline
здесь не работает и в Firefox. Но dominant-baseline
работает. Который, кажется, подтверждает информацию со своей страницы:
Для выравнивания объекта в других элементах (таких как <text>
), см. Dominant-baseline.
Что касается SVGсамо по себе, вы пытаетесь сжать текст в 1px, и это, кажется, делает текст исчезнуть. Если вы удалите font-size
часть, вы увидите там верхний левый угол огромной буквы "T".
Похоже, шрифт не может иметь размер менее 1 пикселя. Таким образом, вместо работы с немного странными координатами в диапазоне от -1 до 2.2, попробуйте использовать «простые» вещи (по крайней мере, пока текст не будет отображен в правильном месте):
<svg viewBox="0 0 15 15" width="150" height="150">
<rect x="0" y="0" width="15" height="15" fill="red" />
<text x="0" y="0" alignment-baseline="hanging" style="font-size: 5px">TEST</text>
</svg>
<p>"TEST" should be inside the red box at the top left?</p>
Это должно как минимум визуализировать текст "ТЕСТ" в Chrome. Это не работает в Firefox.
Вот ваш второй фрагмент с фиксированными координатами, работающий как в Chrome, так и в Firefox:
<svg viewBox="0 0 15 15" width="150" height="150">
<rect x="0" y="0" width="15" height="15" fill="red" />
<text x="0" y="0" dominant-baseline="hanging" style="font-size: 5px;">TEST</text>
</svg>
<p>"TEST" should be inside the red box at the top left?</p>
Вы заметите, что я не использовал text-anchor="start"
. Это потому, что, по крайней мере, согласно https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/text-anchor, start
по умолчанию, поэтому пример отображается так, как если бы он был установлен таким образом.