HTML + CSS
  • 🧑‍💻Full-Stack Web Developer
  • ‼️Список корисних ресурсів
  • 📚Теорія
    • 1️⃣HTML
      • Введення в веб-розробку
      • Теги та атрибути
      • Скелет документа HTML
      • Семантика
      • Розмітка тексту
      • Розмітка тексту (2 частина)
      • Зображення
      • Структура HTML-документа
      • Таблиці
      • Символьні підстановки
      • Таблиця кодів символів
      • Відео та аудіо
      • Інструменти розробника
      • Валідація
    • 2️⃣CSS та селектори
      • CSS
      • Селектори
      • Псевдокласи стану
      • Колір
      • Каскад стилів
      • CSS-змінні
      • Одиниці вимірювання
      • Стилізація тексту
      • Властивості шрифту
      • Псевдоелементи тексту
      • Підключення сторонніх шрифтів
    • 3️⃣Блокова модель
      • Основи блокової моделі
      • Геометрія елемента
      • Типи елементів
      • Структурні псевдокласи
    • 4️⃣Flexbox
      • Концепції
      • Властивості контейнера
      • Властивості елемента
    • 5️⃣Grid
    • 6️⃣Зображення і декор
      • Типи зображень
      • Фон елемента
      • Властивості object-fit і object-position
      • Псевдоелементи
      • Градієнт
      • Тінь елемента
    • 7️⃣Векторна графіка
      • Що таке векторна графіка
      • SVG-елементи
      • SVG-документ
      • Використання векторної графіки
      • Зміна властивостей в SVG
    • 8️⃣Позиціонування
      • Позиційовані елементи
      • Властивість z-index
      • Властивість overflow
    • 9️⃣Переходи і анімація
      • CSS-переходи
      • CSS-анімація
      • 2D-трансформації
      • Перспектива
    • 🔟Форми
      • Для чого потрібні форми
      • Елемент <form>
      • Елемент <label>
      • Елемент <input>
      • Елемент <textarea>
      • Елемент <select>
      • Елемент <datalist>
      • Групування полів
      • Валідація форм
      • Валідація на клієнті
      • Псевдокласи стану
    • 🐭Адаптивна верстка
      • Медіа-запити
      • Метатег viewport
      • Інструменти розробника для адаптивної та респонсивної верстки
      • Типи верстки
      • Стратегія Mobile First
      • Вендорні префікси
      • Налаштування теми
    • 🐹Адаптивна графіка
      • Щільність пікселів
      • Респонсивні зображення
      • Респонсивні фонові зображення
      • Респонсивний елемент <img>
      • Елемент <picture>
    • 🦁Методологія ВЕМ
    • 🐶Препроцесор SASS
    • 🐰CSS фреймворки
      • Що таке CSS фреймворки
  • 👷‍♂️Практика
    • 👷Практика
  • Про мене
    • Про мене
Powered by GitBook
On this page
  • В елементі <img>
  • Як фон елемента
  • Вбудований SVG
  • SVG-спрайт
  • Створення файлу SVG-спрайта
  • Використання символів в HTML
  • Використання сервісу icomoon.io
  • Оптимізація SVG-файлів і SVG-спрайтів
  1. Теорія
  2. Векторна графіка

Використання векторної графіки

PreviousSVG-документNextЗміна властивостей в SVG

Last updated 1 year ago

SVG у веброзробці можна застосовувати по різному. Основні описано далі.

В елементі <img>

SVG можна використовувати в елементі <img> так само, як і будь-який інший формат зображення, наприклад, JPEG або PNG. Для цього потрібно вказати шлях до SVG-файлу в атрибуті src елемента <img>.

<img src="example.svg" alt="SVG image">

При такому використанні навіть при збільшенні масштабу не зʼявляється пікселізація зображення і воно лишається якісним.

Як фон елемента

Щоб використовувати SVG як фонове зображення на веб-сайті, треба використовувати CSS властивість background-image. Синтаксис такий само як і при роботі з растровою графікою.

.background-svg {
    background-image: url('example.svg');
    width: 100px; /* задайте ширину, якщо потрібно */
    height: 100px; /* задайте висоту, якщо потрібно */
  }

Вбудований SVG

Попередніми двома методами можна верстати SVG-файли, утім за такого застосування не можна додавати динамічні ефекти (наприклад при :hover чи :focus). Головно це ефекти зміни заливки чи обведення.

Є спосіб як це реалізувати. Потрібно повністю SVG описати у HTML-верстці. Це називають вбудованим SVG (inline svg).

Для цього потрібно створити елемент <svg> і описати всередині форми векторного зображення. Для прикладу заливку контурів зробимо чорним кольором, а при ховері пропишемо зміну кольору на інший колір.

Недоліки вбудованого SVG-коду:

  • Збільшення коду HTML-файлу.

  • Неможливість повторного використання того самого коду

  • Складності редагування вбудованого SVG.

  • Браузер не кешує вбудовані SVG.

SVG-спрайт

Це сучасна технологія, якою користуються у більшості випадків.

SVG-спрайт - це один файл SVG, який містить кілька інших SVG-зображень (іконок чи графіки) у вигляді символів, які можна використовувати в веб-сайтах. Використання SVG-спрайтів дозволяє зменшити кількість HTTP-запитів, що зменшує час завантаження сторінки та покращує продуктивність веб-сайту.

Переваги SVG-спрайту:

  • Зменшення кількості HTTP-запитів

  • Швидше завантаження сторінки

  • Один файл для всіх SVG-іконок веб-сайту

  • Кешування спрайту браузером

  • Легке редагування іконок в спрайті

  • Можливість повторного використання

  • Не засмічення HTML-коду

  • Можливість динамічно керувати заливкою і обводкою за допомогою властивостей в CSS

Створення файлу SVG-спрайта

Створіть новий файл SVG (наприклад, icons.svg) та додайте усі ваші SVG-зображення як <symbol> елементи. Кожен <symbol> повинен мати унікальний id, який ідентифікує символ, ну і viewBox, який визначає поля огляду іконки.

<svg xmlns="http://www.w3.org/2000/svg">
  <symbol id="icon1" viewBox="0 0 24 24">
    <!-- Ваш SVG-код для першого символу -->
  </symbol>
  <symbol id="icon2" viewBox="0 0 24 24">
    <!-- Ваш SVG-код для другого символу -->
  </symbol>
  <!-- Додайте інші символи, які потрібно включити у спрайт -->
</svg>

Інколи всі <symbol> також огортають в елемент <defs>. Використовується він для визначення визначених користувачем елементів, які можна використовувати в різних частинах SVG-зображення або в інших елементах <defs>.

Розглянемо приклад спрайту із двох іконок, створеного за допомогою сервісу icomoon.io.

<svg aria-hidden="true" style="position: absolute; width: 0; height: 0; overflow: hidden;" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<defs>
<symbol id="icon-home3" viewBox="0 0 32 32">
<path d="M32 19l-6-6v-9h-4v5l-6-6-16 16v1h4v10h10v-6h4v6h10v-10h4z"></path>
</symbol>
<symbol id="icon-music" viewBox="0 0 32 32">
<path d="M30 0h2v23c0 2.761-3.134 5-7 5s-7-2.239-7-5c0-2.761 3.134-5 7-5 1.959 0 3.729 0.575 5 1.501v-11.501l-16 3.556v15.444c0 2.761-3.134 5-7 5s-7-2.239-7-5c0-2.761 3.134-5 7-5 1.959 0 3.729 0.575 5 1.501v-19.501l18-4z"></path>
</symbol>
</defs>
</svg>

Використання символів в HTML

Для використання символів SVG-спрайта у веб-сайті, потрібно створити елемент <svg>, а всередині використовувати елемент <use> та посилання на id символу. (Замість xlink:href можна просто використовувати атрибут href)

<svg class="icon">
  <use xlink:href="icons.svg#icon1"></use>
</svg>

Стилізація (зокрема висота і ширина іконки, а також ефекти при наведенні) описуються у файлі стилів CSS.

<svg class="icon">
  <use href="icons.svg#icon-home3"></use>
</svg>
.icon {
  width: 24px;
  height: 24px;
  fill: #007bff; /* колір символу */
}

.icon:hover {
  fill: red; /* колір символу при hover */
}

Для наочності весь SVG-спрайт вставлено в документ де задано id, але в цілому як зазначено вище вказується абсолютний або відносний шлях до спрайту і після хештегу id нашої іконки.

У прикладі увесь SVG-спрайт розміщений в HTML-розмітці, тому і відсутнє ім'я SVG-файлу перед хешем. Якби SVG-спрайт лежав окремим файлом, було б звернення за ім'ям, а потім # і id символа.

Отже, всередині SVG-спрайту є елемент <svg> і набір елементів <symbol>, що описують повністю увесь SVG-спрайт і кожну фігуру окремо. У кожного <symbol> є унікальний ідентифікатор. В HTML використовується атрибут href і звернення до SVG-символа відбувається через хеш (#) і його ідентифікатор.

Використання сервісу icomoon.io

icomoon.io - це онлайн сервіс, який дозволяє легко створювати SVG-спрайти. У ньому є безплатні й платні бібліотеки готових іконок. Також можна завантажити свої кастомні іконки у форматі SVG (кнопка Import Icons).

Щоб згенерувати й завантажити архів з SVG-спрайтом із обраних іконок потрібно натиснути кнопку Generate SVG & More і потім обрати іконки і натиснути кнопку Download.

Після розпакування архіву всередині буде міститися SVG-спрайт, який можна переносити у свій проєкт та перейменовувати його.

Припустімо, що нам потрібно у вже існуючий SVG-спрайт додати ще одну іконку. Для цього немає потреби наново генерувати новий SVG-спрайт. Для цього потрібно просто додати його <symbol>. Якщо на сервісі icomoon.io навести курсор на іконку, то зʼявиться кнопка <> Get Code. Натиснувши на цю кнопку ми отримаємо код іконки, який можемо скопіювати і вставити куди захочемо.

Оптимізація SVG-файлів і SVG-спрайтів

Якщо SVG-спрайт дуже великий і має багато іконок, то він напевне має надлишкову інформацію (зокрема пробіли та абзаци тощо). Скоротивши надлишкову інформацію ми зменшуємо розмір SVG-спрайту або векторного зображення і таким чином пришвидшуємо завантаження застосунку.

Потрібно спрайт чи векторне зображення перетягнути у поле застосунку.

Тепер ми можемо побачити на скільки оптимізовано SVG-спрайт чи векторне зображення і завантажити оптимізований файл.

Покликання:

SVG-спрайт швидко створюють за допомогою сервісу . Утім розглянемо як створюється спрайт вручну. Тобто розглянемо структуру SVG-спрайту.

Для оптимізації векторних зображень використовують онлайн-сервіс:

- сервіс для створення SVG-спрайтів

- оптимізація векторних зображень

📚
7️⃣
icomoon.io
https://jakearchibald.github.io/svgomg/
icomoon.io
https://jakearchibald.github.io/svgomg/