viewBox SVG и адаптивное масштабирование
Обеспечьте правильное масштабирование SVG на экранах любого размера
«viewBox SVG и адаптивное масштабирование» — бесплатный урок HTML Academy на CoddyKit. Это урок 3 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения HTML Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс HTML Academy содержит 4 уроков всего.
width и height в сравнении с viewBox
Значения width и height SVG задают размер отображения в DOM. Атрибут viewBox определяет внутреннее пространство координат. Эти параметры независимы: viewBox="0 0 100 100" при width="200" и height="200" увеличивает пространство координат в 2 раза.
Синтаксис viewBox
viewBox="min-x min-y width height". Наиболее распространённый вариант: viewBox="0 0 100 100" задаёт пространство координат размером 100×100, начинающееся в начале координат. Значения координат в SVG относятся к этому пространству, а не к пикселям.
Адаптивный SVG
Чтобы сделать SVG адаптивным, не указывайте атрибуты width и height или задайте им значение 100% и позвольте viewBox определять пропорции. Добавьте CSS: svg { width: 100%; height: auto; }. SVG масштабируется под размер контейнера, сохраняя соотношение сторон.
preserveAspectRatio
preserveAspectRatio управляет тем, как viewBox вписывается в область просмотра SVG при различии соотношений сторон. Возможные значения: "xMidYMid meet" (по умолчанию — с пустыми полями), "xMidYMid slice" (обрезка для заполнения), "none" (растягивание без сохранения соотношения сторон).
min-x и min-y для панорамирования
Изменение min-x и min-y позволяет панорамировать видимую часть пространства координат SVG. viewBox="50 50 100 100" показывает область от (50,50) до (150,150). Это позволяет реализовать интерактивное панорамирование, обновляя значения viewBox с помощью JavaScript.
Масштабирование с помощью viewBox
Уменьшите размеры viewBox, чтобы приблизить изображение: viewBox="25 25 50 50" показывает меньшую область, увеличенную до размера элемента SVG. Увеличьте размеры, чтобы отдалить изображение. Обновляйте viewBox при событиях колеса мыши, чтобы реализовать интерактивное масштабирование без изменения размера элемента SVG.
SVG в img и встроенный SVG
SVG в теге img: адаптивно масштабируется с помощью object-fit, но не поддерживает стилизацию через CSS и управление с помощью скриптов. Встроенный SVG: полностью доступен для CSS и JavaScript, но увеличивает размер HTML. Выбирайте вариант с учётом требований к интерактивности.
Шаблон SVG-значка
SVG-значки используют фиксированный viewBox, например "0 0 24 24", и не задают width и height, позволяя CSS управлять их размером: .icon { width: 1.5rem; height: 1.5rem; }. viewBox обеспечивает правильное масштабирование значков при любом размере и сохраняет чёткость векторного изображения.
Symbol для спрайтов значков
Определяйте значки внутри скрытого SVG с помощью элементов <symbol viewBox="0 0 24 24">. Ссылайтесь на них так: <use href="#icon-name">. Каждый элемент use может иметь собственные width, height, fill и color — один файл спрайта для всех значков.
currentColor для темизации
Значение SVG fill="currentColor" наследует свойство CSS color от самого элемента или его родителя. Задайте color: red для SVG или родительского элемента, и значок автоматически заполнится красным цветом. Это позволяет одноцветным значкам следовать цвету текста без специальных стилей SVG.
Отладка viewBox
Если содержимое SVG обрезается или неожиданно располагается, выведите значение viewBox в журнал или проверьте его. Распространённая ошибка — задать viewBox равным размерам исходного изображения в пикселях, не скорректировав отображаемый размер, из-за чего возникают проблемы с масштабированием. Убедитесь, что viewBox соответствует фактическим границам содержимого изображения SVG.
Проверка знаний
Как сделать так, чтобы SVG адаптивно масштабировался под любую ширину контейнера?
Итоги
viewBox SVG определяет внутреннее пространство координат, независимое от отображаемого размера в пикселях, и тем самым обеспечивает адаптивное масштабирование. Значения width:100% и height:auto вместе с viewBox позволяют SVG подстраиваться под любой контейнер. Шаблон спрайта symbol+use, темизация с помощью currentColor и preserveAspectRatio образуют полный набор средств для гибкого использования SVG с поддержкой тем.
Изучай HTML с ИИ-репетитором — бесплатно
Пиши и запускай код прямо в браузере, получай мгновенную помощь от ИИ-репетитора 24/7 и продолжи учиться на сайте или в приложении.
- Курсы
- 40
- Уроки
- 159
Часто задаваемые вопросы
Урок «viewBox SVG и адаптивное масштабирование» бесплатный?
Да — полный текст урока «viewBox SVG и адаптивное масштабирование» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс HTML Academy, подпишись на CoddyKit PRO. Курс HTML Academy содержит 4 уроков всего.
Чему я научусь в уроке «viewBox SVG и адаптивное масштабирование»?
Обеспечьте правильное масштабирование SVG на экранах любого размера Ты практикуешь HTML Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать HTML Academy?
Предыдущий опыт не требуется. HTML Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 4.
Сколько времени занимает урок «viewBox SVG и адаптивное масштабирование»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке HTML Academy?
Да. Каждый урок HTML Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Встроенный SVG, img и object
- Основные фигуры SVG: rect circle path
- viewBox SVG и адаптивное масштабирование
- Анимация SVG с помощью CSS и SMIL