Понимание SVG ViewBox
Хотя полное понимание того, как работают SVG, довольно сложно и может считаться «редким» навыком, оно может оказаться весьма полезным. ViewBox
может оказаться весьма запутанным для новичка, поэтому вот базовое руководство, в котором я рассказываю самые основы viewBox.
Поле просмотра
viewBox
— это то, что делает SVG масштабируемыми. Мы можем сделать наш SVG любого размера, который нам нравится, и все будет масштабироваться естественным образом, поскольку элементы в SVG относятся к нему. viewBox
можно рассматривать как телескоп; он масштабируется и панорамируется до размеров, которые мы ему даем. Он имеет 4 атрибута -
min-x
, min-y
, width
и height
.
Позиция viewBox
может быть установлена с помощью первых двух атрибутов. Это координаты, откуда начинается viewBox
.
Атрибуты width
и height
отвечают за функцию «масштабирования». Если эти значения совпадают с высотой и шириной SVG, ничего не изменится.
Однако, если они больше, чем размеры SVG, это создаст эффект «уменьшения масштаба», и наоборот, если они меньше. Чтобы было понятнее, давайте посмотрим на этот код:
<svg
style="border: 1px solid black;"
height="300"
width="300"
viewBox="0 0 300 300"
xmlns="<http://www.w3.org/2000/svg>"
>
<rect x="0" y="0" width="100%" height="100%" fill="red" />
<circle cx="50%" cy="50%" r="10" fill="black" />
</svg>
Размеры SVG: 300*300
, прямоугольник и круг внутри.
Поскольку размеры SVG и размеры viewBox
одинаковы, SVG выглядит одинаково.
Вот как будет выглядеть SVG без viewBox
.
О фигурах:
Прямоугольник начинается с
0,0
SVG, и, поскольку размеры указаны в процентах, он покрывает весь SVG.
Круг начинается с
50%, 50%
-, который является центром прямоугольника SVG, с заданным радиусом10px
Изменение высоты и ширины
Увеличение:
Чтобы создать эффект «увеличения», все, что нам нужно сделать, это изменить два последних атрибута — height
и width.
, если их значения меньше значений SVG; которые в нашем случае являются 300*300,
viewBox
работами, подобными телескопу или увеличительному стеклу, они показывают нам меньшую площадь, но в увеличенном виде.
Теперь, если мы изменим координаты viewBox на 0 0 100 100
, мы увидим, что круг кажется больше. Относительно центра SVG окно просмотра теперь показывает нам 100*100
. Поскольку центр кругов был в процентах, он все еще остается в центре.
Точно так же мы можем изменить его на 0 0 50 50.
Если мы используем здесь большие размеры, вместо увеличения масштаб будет уменьшен.
<svg style="border: 1px solid black;" height="300" width="300" viewBox="0 0 100 100" xmlns="<http://www.w3.org/2000/svg>" > <rect x="0" y="0" width="100%" height="100%" fill="red" /> <circle cx="50%" cy="50%" r="10" fill="black" /> </svg>
Уменьшение:
Точно так же, если высота и ширина viewBox
больше, чем у SVG, создается эффект «уменьшения масштаба». Это связано с тем, что, хотя SVG равен 300*300
, увеличение значений viewBox
означает, что он показывает нам большую площадь, чем эта, из-за чего SVG выглядит меньше.
В случае viewBox = "0 0 1000 1000"
видимая область теперь масштабируется до 1000px*1000px.
Поскольку размеры элемента <rect>
указаны в процентах, визуально он остается неизменным, но circle
заметно меньше.