#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)
Комментариев нет:
Отправить комментарий