Работа с SVG. Адаптивность

В этом уроке рассмотрим как добиться адаптивности изображений в формате SVG.

Создание адаптивного SVG изображения

Как уже не раз упоминалось, мы можем увеличивать SVG до любых размеров:

<img src="monkey.svg" alt="Monkey face" style="width: 100%; height: auto;">

Иногда этого недостаточно. К примеру, если вы подключаете SVG через тег <object> или напрямую вставляете изображение на страницу. В этом случае изменение размеров обычным способом не сработает.

Делаем SVG адаптивным

После прямой вставки SVG между тегом <body?, HTML страницы будет выглядеть примерно так:

<body>
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
width="500px" height="500px" viewBox="0 0 500 500" enable-background="new 0 0 500 500" xml:space="preserve">
<circle fill="#F7941E" stroke="#231F20" stroke-width="10" cx="250"cy="250" r="200" opacity="0.6" />
</svg>
</body>

Если слегка почистить тег <svg>, то код станет более презентабельным:

<svg version="1.1" viewBox="0 0 500 500">
<circle fill="#F7941E" stroke="#231F20" stroke-width="10" cx="250"cy="250" r="200" opacity="0.6" />
</svg>

Удаление лишних атрибутов элемента <svg> делает изображение адаптивным, однако добавляет чуть больше пространства выше и ниже картинки. Атрибут viewBox нужно оставить. Далее нам нужно сделать ещё несколько шагов:

Во-первых, поместите элемент SVG в <div> и добавьте атрибут preserveAspectRatio и класс родительскому элементу <svg>:

<div class="svg-container">
<svg version="1.1" viewBox="0 0 500 500" preserveAspectRatio="xMinYMin meet" class="svg-content">
<circle fill="#F7941E" stroke="#231F20" stroke-width="10" stroke-miterlimit="10" cx="250" cy="250" r="200" opacity="0.6" />
</svg>
</div>

Эти действия поместят SVG в верхнюю часть контейнера. Далее применим парочку трюков, которые обычно используются для адаптивности видео:

.svg-container {
display: inline-block;
position: relative;
width: 100%;
padding-bottom: 100%;
vertical-align: middle;
overflow: hidden;
}

А теперь стили непосредственно к SVG:

.svg-content {
display: inline-block;
position: absolute;
top: 0;
left: 0;
}

Данный способ делает SVG адаптивным без нанесения ущерба другим элементам страницы; Этот же способ работает в случае использования тега <object>:

<div class="svg-container">
<object type="image/svg+xml" data="samurai.svg" width="100%"height="100%" class="svg-content">
</object>
</div>

Весь контент SVG будет изменяться в размере, даже текст.

Данный урок подготовлен для вас командой сайта ruseller.com
Источник урока: http://demosthenes.info/blog/744/Make-SVG-Responsive
Перевел: Станислав Протасевич
Урок создан: 26 Декабря 2014
Просмотров: 13030
Правила перепечатки


5 последних уроков рубрики "HTML5"

  • Расширяем возможности HTML за счёт создания собственных тегов

    В этом уроке я покажу процесс создания собственных HTML тегов. Пользовательские теги решают множество задач: HTML документы становятся проще, а строк кода становится меньше.

  • Определение доступности атрибута HTML5 с помощью JavaScript

    Сегодня мы посмотрим, как можно организовать проверку доступности атрибута HTML5 с помощью JavaScript. Проверять будем работу элементов details и summary.

  • HTML5: API работы с вибрацией

    HTML5 - глоток свежего воздуха в современном вебе. Она повлиял не только на классический веб, каким мы знаем его сейчас. HTML5 предоставляет разработчикам ряд API для создания и улучшения сайтов с ориентацией на мобильные устройства. В этой статье мы рассмотрим API для работы с вибрацией.

  • Создание форм с помощью Webix Framework — 4 практических примера

    Веб дизайнеры частенько сталкиваются с необходимостью создания форм. Данная задача не простая, и может вызвать головную боль (особенно если вы делаете что-то не стандартное, к примеру, много-страничную форму). Для упрощения жизни можно воспользоваться фрэймворком. В этой статье я покажу вам несколько практических приёмов для создания форм с помощью фрэймворка Webix.

  • Знакомство с фрэймворком Webix

    В этой статье мы бы хотели познакомить вас с фрэймворком Webix. Для демонстрации возможностей данного инструмента мы создадим интерфейс online аудио плеера. Не обольщайтесь — это всего лишь модель интерфейса. Исходный код доступен в демо и на странице GitHub.

^ Наверх ^