Уроки

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

Спрайт — это крупное изображение, содержащее десятки мелких. Спрайт создаётся путём размещения всех иконок на одной картинке подобно наклеиванию стикеров на доске. Делалось это для того, чтобы сократить количество запросов к серверу и ускорить загрузку страницы. 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>

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

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