Страницы

Поиск по вопросам

среда, 11 декабря 2019 г.

Позиционирование SVG и вертикальное выравнивание <text>

#css #svg


Есть SVG-файл:










!






Отображается так:



Как выровнять text строго по середине по вертикали? И  какие ещё существуют способы
позиционирования объектов в SVG файле?
    


Ответы

Ответ 1



Для вертикального выравнивания используйте dominant-baseline (поддерживается в Chrome, Opera, Firefox): ! Также можно выравниваться text атрибутом dy (поддерживается в Chrome, Opera, Firefox, IE, Edge): !

Ответ 2



какие существуют способы позиционирования объектов в SVG файле? Способов позиционирования объектов svg внутри файла *.svg достаточно много. В данном посте не рассматривается позиционирование с помощью правил CSS, только SVG #1 Позиционирование с помощью Создав в секции любой объект svg, например круг, можно его в дальнейшем многократно использовать с помощью команды , позиционируя клоны фигур координатами x и y. #2 Позиционирование preserveAspectRatio Горизонтальное позиционирование Структура файла построена на вложении в родительский SVG дочерних svg со своими значениями viewBox и preserveAspectRatio ... ... ... Вертикальное позиционирование Структура та же, что и для горизонтального позиционирования, отличие в значениях во вложенных viewBox #3 Позиционирование viewBox Горизонтальное позиционирование Первые два параметра x-min, y-min viewBox="0 0 300 300 отвечают за расположение начала пользовательской системы координат относительно viewport Изменяя их значения можно сдвигать svg изображение по горизонтали и вертикали. Подробнее тут и тут Структура файла svg точно такая же, как и для способа позиционирования с preserveAspectRatio Только надо иметь ввиду, что изменяя у viewBox координаты влево мы сдвигаем изображение вправо, а для вертикальной координаты отрицательные значения сдвигают изображение вверх. Другими словами - отрицательные координаты viewBox двигают изображение в положительном направлении. Позиционирование viewBox Вертикальное позиционирование #4 Позиционирование с использованием translate Универсальный и самый простой для освоения способ позиционирования svg изображений. В основе позиционирования команда - transform="translate(100 100)", атрибуты которой сдвигают целиком изображение или его фрагменты по координатным осям. Положительные значения атрибутов сдвигают изображение вправо и вниз. Отрицательные значения - влево и вверх. Структура файла: код svg иконки ... код svg иконки ... код svg иконки ... код svg иконки ... В корневой тег ... /svg>вложены дочерние изображения svg, к каждому из них применяется команда transform="translate(x y)" для позиционирования. Пример кода ниже: К большому сожалению этот способ работает только в Firefox - ((( #5 Вариант работает во всех браузерах, включая IE11 В варианте #4 использовались в файле SVG вложенные теги и для позиционирования иконок команда transform="translate(X Y) Это очень удобно, так как у каждого вложенного тега ....код иконки ... есть свой viewBox, который позволяет масштабировать каждую иконку по отдельности, но к сожалению viewBox во вложенных тегах .. понимает только Firefox. Поэтому в этом варианте используются только групповые теги с командой позиционирования - transform="translate(X Y)

Комментариев нет:

Отправить комментарий