Возвращайте до 18% с пополнений рекламы
  • Все популярные рекламные сети в одном окне
  • Рекламные инструменты — бесплатно
  • Доступ к конструктору лендингов и WebApp-приложений
  • Закрывающие документы точно в срок
ring svg
  1. Главная >
  2. Блог >
  3. Фреймворк Compass и CSS Image Sprite

Фреймворк Compass и CSS Image Sprite

Compass

CSS Image Sprite представляет собой метод объединения нескольких изображений в один файл для уменьшения HTTP запросов и оптимизации веб загрузки. Существует много способов и удобных инструментов для достижения этой цели. Вы также можете использовать даже Photoshop. В данной статье мы рассмотрим использование функции Sprite Function для открытого фреймворка Compass. Если вы незнакомы с этим фреймворком, то подробнее о нем узнать можно здесь.

Итак, давайте взглянем на то, как это работает.

Создаем проект Compass

Перед началом работы с кодами Compass, нам нужно создать проект Compass. Таким образом, что когда происходят изменения в проекте, включая изображения и .scss, Компас будет компилировать его в надлежащей форме.

Давайте откроем Terminal или Command Prompt (если вы находитесь на Windows), и выполним следующие команды:

compass create /path/to/project

cd /path/to/project

compass watch

Совмещение изображений

Как мы уже упоминали выше, вы можете использовать Photoshop, чтобы вручную присоединить изображения, или вы можете использовать несколько полезных инструментов, таких как SpriteBox или SpriteMe. Compass интегрирует эти функции в Function. Допустим, у нас есть следующие значки images/browsers/<images>.png в папках.

Папка изображений

Чтобы присоединиться эти иконки в Compass, мы можем использовать правило @ Import, а затем направить его в папки с изображениями через .scss stylesheet:

@import "browsers/*.png";

После сохранения файла, Compass скомбинирует эти изображения и создаст новые image файлы, следующим образом:

Скомпановали

Ориентация макета

Кроме того, мы можем также установить ориентацию спрайта ориентации. Как вы видите на скриншоте выше, изображения расположены вертикально по умолчанию. В случае если вертикальная ориентация не соответствует обстоятельствам, мы можем направить её горизонтально или по диагонали со следующими переменными $< map>- layout : horizontal ; или <map>- layout : horizontal ; замените < map > с именем папки, где вы сохранили изображения.

$browsers-layout:horizontal;

@import "browsers/*.png";

Горизонталь

Диагональ

$browsers-layout:vertical;

@import "browsers/*.png";

Диагональ

Добавление изображения в таблицу стилей

Как только мы объединили изображений, мы добавляем изображение в таблицу стилей через фоновое изображение. Традиционно мы делаем это таким образом:

.chrome {

background-position: 0 0; width: 128px; height: 128px;

}

.firefox {

background-position: 0 -133px; width: 128px; height: 128px;

}

.ie {

background-position: 0 -266px; width: 128px; height: 128px;

}

.opera {

background-position: 0 -399px; width: 128px; height: 128px;

}

.safari {

background-position: 0 -532px; width: 128px; height: 128px;

}

В Compass, у нас есть несколько способов, которые гораздо проще. Во-первых, мы можем создать что-то вроде CSS правил с синтаксисом @include all-<map>-sprites;. Заменить <map> на папку, где мы сохранили изображения.

@include  all-browsers-sprites;

Эта линия выше при компиляции с обычным CSS генерирует определения фонового изображения, а также каждую из его позиций, как показано ниже:

.browsers-sprite, .browsers-chrome, .browsers-firefox, .browsers-ie, .browsers-opera, .browsers-safari {

background: url('/images/browsers-sad8e949931.png') no-repeat;

}

.browsers-chrome {

background-position: 0 0;

}

.browsers-firefox {

background-position: 0 -128px;

}

.browsers-ie {

background-position: 0 -256px;

}

.browsers-opera {

background-position: 0 -384px;

}

.browsers-safari {

background-position: 0 -512px;

}

Или, мы также можем добавить фоновые изображения индивидуально, к определенному селектору с этим синтаксисом @include <map>-sprite(image-naem);, как и в предыдущем коде заменить <map> на папку, где мы храним эти изображения. Вот пример:

li {
@include browsers-sprite(safari);
}

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

.browsers-sprite, li {

background: url('/images/browsers-sad8e949931.png') no-repeat;

}

li {

background-position: 0 -512px;

}

Указание измерений контейнера

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

С Compass, мы можем использовать эту функцию  <map> - sprite - height ( image - name ) или  <map> - sprite - width ( image - name),чтобы получить ширину и высоту изображения. В этом примере мы будем получять ширину и высоту изображения, затем сохраним значение переменной, а потом назначим фоновое изображение с @include директивом.

$height: browsers-sprite-height(safari);

$width: browsers-sprite-width(safari);

li {

display: inline-block;

height: $height;

width: $width;

@include browsers-sprite(safari);

}

Когда мы собирем все коды выше, в обычном CSS он превратится в следующее:

.browsers-sprite, li {

background: url('/images/browsers-sad8e949931.png') no-repeat;

}

li {

display: inline-block;

height: 128px;

width: 128px;

background-position: 0 -512px;

}

Есть несколько и других полезных функций в Compass, но в этой статье перечисленны все необходимые функции для создания CSS Image Sprite.
 

Высоких конверсий!

blog comments powered by Disqus
Возвращайте до 18% с пополнений рекламы
  • Все популярные рекламные сети в одном окне
  • Рекламные инструменты — бесплатно
  • Доступ к конструктору лендингов и WebApp-приложений
  • Закрывающие документы точно в срок
ring svg
copyright © 2011–2024 Все права защищены
Запрещено любое копирование материалов ресурса без письменного согласия владельца — ООО "Феникс-Маркетинг". ИНН:7725812838, КПП:772501001, ОГРН: 513774619323915280, Москва, ул. Ленинская слобода, д. 19, стр. 1, этаж/пом 3/25

ООО «Феникс-Маркетинг» — IT-компания с многолетним опытом работы, разрабатывающая инновационные решения для управления процессом лидогенерации (пост-клик маркетинг). Разработанное нами технологическое программное решение LPGENERATOR позволяет создавать целевые страницы в визуальном редакторе и управлять заявками (лидами) в CRM-системе в целях проведения эффективных, высококонверсионных рекламных кампаний