#svg #viewport
#svg #область просмотра
Вопрос:
Я пытаюсь понять область просмотра SVG. Почему эти три примера так отличаются?
svg {
border: 2px solid red;
}
<div>
<svg>
<rect x="0" y="0" width="100" height="100" fill="blue" />
</svg>
<svg width="200" height="200">
<rect x="0" y="0" width="100" height="100" fill="blue" />
</svg>
<svg viewBox="0 0 200 200">
<rect x="0" y="0" width="100" height="100" fill="blue" />
</svg>
</div>
Комментарии:
1. Первый svg: по умолчанию имеет ширину = «300», высоту = «150» и поле просмотра для соответствия: 0 0 300 150. Второй svg имеет ширину = «200», высоту = «200» и поле просмотра для соответствия; 0 0 200 200. Третий svg имеет viewBox =»0 0 200 200″. Поскольку атрибуты width и height отсутствуют, они будут масштабироваться, чтобы занять всю доступную ширину — в данном случае 100 Вт. Соотношение сторон будет сохранено, и в этом случае высота будет такой же, как ширина, т.е. 100 Вт
Ответ №1:
- В первом примере отсутствуют ширина и высота. В спецификации CSS говорится, что замененные элементы, в которых отсутствуют значения ширины и высоты, возвращаются к 300px x 150px, чтобы вы видели верхний левый 300 x 150 пикселей того, что вы рисуете на холсте.
- Второй пример имеет ширину и высоту, чтобы вы могли видеть эту часть холста.
- В третьем примере также нет ширины / высоты, но, как ни странно, теперь мы будем использовать значения пробелов 100% x 100% для ширины / высоты, потому что у нас есть полезное соотношение сторон из окна просмотра. Окно просмотра также масштабирует внутреннюю систему координат 200 x 200 для закрепления на этом холсте, чтобы все выглядело больше.