Уроки

Использование технологии спрайтов

Спрайт — это крупное изображение, содержащее десятки мелких. Спрайт создаётся путём размещения всех иконок на одной картинке подобно наклеиванию стикеров на доске. Делалось это для того, чтобы сократить количество запросов к серверу и ускорить загрузку страницы. 30 картинок по 2 килобайта загружаются в разы медленней, чем одна групповая картинка размером 60 килобайт.

Используют спрайт следующим образом: у HTML элемента фоном указывается спрайтовое изображение, а затем этот фон смещают таким образом, что на картинке видна только определённая иконка.

Но у этой технологии есть ряд недостатков:

  • Спрайт сложен в поддержке. Позиционирование спрайта в качестве фона требует от программиста повышенной аккуратности.
  • Спрайт сложнее оптимизировать под несколько разных размеров и экранов устройств. Вам может понадобиться делать копии картинок в разных размерах, чтобы иконки смотрелись качественно на всех экранах.

Сравните результат и исходный код технологии спрайта и data URL:

<!DOCTYPE html>
<html>
    <head>
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <style>
            .bg-envelope {
                width: 64px; height: 64px;
                background: url('css_sprites.png') -4px -4px;
            }
            .bg-user {
                width: 64px; height: 64px;
                background: url('css_sprites.png') -76px -4px;
            }
            .bg-search {
                width: 64px; height: 64px;
                background: url('css_sprites.png') -4px -76px;
            }
            [class^="svg-"],
            [class*=" svg-"] {
                width: 40px;
                height: 40px;
            }
            .svg-envelope {
                background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M19 1H5a5.006 5.006 0 0 0-5 5v12a5.006 5.006 0 0 0 5 5h14a5.006 5.006 0 0 0 5-5V6a5.006 5.006 0 0 0-5-5ZM5 3h14a3 3 0 0 1 2.78 1.887l-7.658 7.659a3.007 3.007 0 0 1-4.244 0L2.22 4.887A3 3 0 0 1 5 3Zm14 18H5a3 3 0 0 1-3-3V7.5l6.464 6.46a5.007 5.007 0 0 0 7.072 0L22 7.5V18a3 3 0 0 1-3 3Z'/%3E%3C/svg%3E");
            }
            .svg-user {
                background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 12a6 6 0 1 0-6-6 6.006 6.006 0 0 0 6 6Zm0-10a4 4 0 1 1-4 4 4 4 0 0 1 4-4ZM12 14a9.01 9.01 0 0 0-9 9 1 1 0 0 0 2 0 7 7 0 0 1 14 0 1 1 0 0 0 2 0 9.01 9.01 0 0 0-9-9Z'/%3E%3C/svg%3E");
            }
            .svg-search {
                background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='m23.707 22.293-5.969-5.969a10.016 10.016 0 1 0-1.414 1.414l5.969 5.969a1 1 0 0 0 1.414-1.414ZM10 18a8 8 0 1 1 8-8 8.009 8.009 0 0 1-8 8Z'/%3E%3C/svg%3E");
            }
        </style>
    </head>
    <body style="font-family: sans-serif;">
        <p>Спрайтовые кнопки. Размер фиксированный 64 пикселя.</p>
        <div class="bg-envelope"></div>
        <div class="bg-user"></div>
        <div class="bg-search"></div>
        <p>Data URL кнопки. Размер резиновый.</p>
        <div class="svg-envelope"></div>
        <div class="svg-user"></div>
        <div class="svg-search"></div>
    </body>
</html>

ПРО подписка для работы с сервисом

Промо
Для подготовки коммерческого предложения.
190 ₽
50 страниц на 10 дней
  • 1 страница даёт 1 запуск инструмента Проверка страницы.
  • Покупается для определённого сайта
  • Ограничения на остальные инструменты остаются теми же
ПРО подписка
Для регулярной работы над сайтом или группой сайтов.
1 580 ₽
3500 страниц в неделю. Срок подписки — 1 месяц.
Кошелёк
Отдельный баланс страниц, дополняющий баланс ПРО подписки.
190 ₽
Количество страниц
  • Требуется активная ПРО подписка для использования баланса кошелька
Мы используем cookie. Продолжая пользоваться сайтом, вы соглашаетесь на обработку персональных данных в соответствии с политикой конфиденциальности. Соглашаюсь