Сайт о телевидении

Сайт о телевидении

» » CSS-спрайты - что это такое, и как их использовать. CSS-спрайты: что это, почему это полезно и как их использовать

CSS-спрайты - что это такое, и как их использовать. CSS-спрайты: что это, почему это полезно и как их использовать

Существует множество методов по оптимизации веб-страниц. Какие-то из них работают, какие-то уже нет. Тем не менее есть некоторые методы, обязательные для исполнения на любом сайте и блоге. Об одном из них я и хотел с вами поговорить.

Один из основных методов оптимизации страниц сайта. Поэтому сегодня мы поговорим о том, как объединить в CSS спрайты изображения на сайте, увеличив тем самым скорость их загрузки.

Немного истории

В далеком-далеком прошлом, когда в квартирах пиликали модемы, а скорость соединения не превышала 5 Кбит/сек., люди корпели над нелегкой задачей, как заставить сайты загружаться быстрее и при этом не платить баснословные суммы за входящий трафик. Думали они, значит, думали, и придумали компоновать изображения, используемые на странице в спрайты.

И понеслось…

Объединяем изображения в спрайт

И так, как мы ранее выяснили, спрайт – это несколько изображений, скомпонованных в одно целое на прозрачном фоне, доступ к которым осуществляется при помощи CSS свойства background-position . Но пожалуйста, не перепутайте его с коллажем. Спрайт ≠ коллаж.

Для того чтобы получить спрайт, нужно все кнопки, иконки, буллиты и прочую хрень , максимально компактно уместить в одном PNG файле. Не забудьте, фон должен быть прозрачным. А теперь давайте разберем на примере.

Допустим, мы располагаем PSD файлом вот с такой распрекрасной кнопкой в 3х состояниях.

Что делает среднестатистический блоггер-верстальщик-самоучка? Он вырезает кнопку в каждом состоянии и сохраняет ее в отдельных файлах. То есть, одна кнопка занимает у этого славного человека 3 картинки. А если вы напряжетесь, то вспомните, что каждая картинка на сайте, это дополнительный HTTP запрос, который нагружает сервер и ваш блог работает все медленнее и медленнее и медленнее и медленнее и медленнее и медленнее и медленнее…

Чтобы этого не происходило, гораздо логичнее сохранить кнопку в одном файле . Для этого мы, открываем все тот же PSD файл, удаляем из него бесполезные стрелки, надписи, фон и компонуем все состояния кнопки как можно ближе друг к другу без нахлеста.

Вот что у нас в итоге получилось. Ни в коем случае кнопки не должны между собой пересекаться.

Отлично, графический файл мы с вами подготовили, теперь давайте я покажу вам как его сверстать.

Верстка спрайтов

Верстка CSS спрайтов ничем не отличается от верстки обычных картинок, за исключением одного НО. Вам нужно знать не только точный размер того изображения, которое вы хотите отобразить, но и его координаты. К примеру, весь спрайт у нас занимает 330 px в ширину и 150 px в высоту.

Но нам нужно отобразить только кнопку, которая занимает 227 px в ширину и 41 px в высоту, точно указав ее координаты. Если вы не располагаете хорошим html редактором - могу .

Создаем файл index.html и прописываем в него необходимые строки кода, доктайп и все такое.

После того, как все стандартные действия проделаны, давайте попробуем отобразить нашу кнопку.

После тега body создаем контейнер div с классом button – это и будет наша кнопка.

1

На этом наш html заканчивается и теперь необходимо прописать для кнопки CSS стили.

Код ниже показывает, что сначала мы объявляем класс button . Затем при помощи свойств height и width задаем размеры нашей кнопки. Свойство background позволяет выбрать файл, который мы будем использовать в качестве спрайта, а background-position задать координаты, требующейся нам картинки в этом спрайте. Все просто.

1 2 3 4 .button { height : 41px ; width : 227px ; background : url (img/sprite.png ) ; background-position : 0px -12px ; }

Давайте подробнее разберемся со свойством background-position .

Как можно заметить из кода выше, оно имеет два значения. Первое значение позволяет задать координаты изображения по оси X, а второе, следовательно, по оси Y.По оси X наша кнопка никуда не скачет, так-как все состояния находятся друг под другом. Следовательно, для того, чтобы при наведении появилась второе состояние кнопки, нам нужно изменить значение, отвечающее за ось Y.

1 2 .button :hover { background-position : 0px -56px ; } .button :active { background-position : 0px -98px ; }

Как известно, а если нет то уже да, каждая кнопка имеет несколько состояний.

  1. Normal – нормальное или обычное состояние
  2. Hover – состояние кнопки при наведении курсора
  3. Active – состояние кнопки во врем нажатия

Этими свойствами мы и воспользовались.

Если лень вручную делать спрайты и вообще заморачиваться с фотошопом, вам поможет замечательный бесплатный сервис: spritepad.wearekiss.com . Просто закидываете в рабочую область необходимые картинки и он составит для вас спрайт.

В заключении

CSS спрайты - очень важный этап на пути ускорения работы сайта. Отнеситесь к нему с должным уважением и старайтесь использовать повсеместно.

Спрайт - это не только вредный напиток, но и весьма полезная css – фишка, которая позволит улучшить состояние вашего сайта, а также даст массу новых идей в плане ее использования.

Речь идет об известном методе объединения всех служебных картинок типа кнопок, иконок, частей фона и даже лого в одно большое изображение, которое как раз и называется спрайтом (css sprite ).

Зачем нужен спрайт на сайте?

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

Если для такой кнопки использовать два отдельных изображения, то браузер сначала загрузит лишь первое. И когда вы наведете указатель мыши на эту кнопку, то можете заметить задержку в появлении второго изображения, так как она будет подгружаться лишь после вашего действия. Так уж устроены браузеры.

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

Ну и в-третьих, это просто красиво, упорядоченно и современно.

Принцип работы спрайта на сайте

Итак, в чем суть метода. Мы имеем одну большую картинку, на которой все детали дизайна размещены кучно. Вот, к примеру, спрайт всем известного Амазона (фрагмент):

А теперь вспоминаем начальные титры нашего старого советского фильма про Шерлока Холмса и доктора Вастона. Там, если вы помните, на кучу перемешанных букв наводили черный трафарет с прорезями и через них становился виден вполне читаемый текст.

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

Как выбирается? Легко и просто!

Любое изображение на спрайте имеет свои размеры по ширине и высоте. И также любое из них расположено в строго определенном месте. Значит, зная размеры картинки и ее координаты, можно легко указать браузеру, где ее искать и что конкретно показывать:

Button {
width: 180px;
height: 20px;
background: url(sprite.png) no-repeat;
background-position: 0 -80px;
}

Данная запись означает, что для кнопки с классом.button заданы размеры по ширине и высоте и указано фоновое изображение, в качестве которого и выступает сам спрайт. Ключевым моментом здесь является последняя строчка правил:

background-position: 0 -80px;

Она как раз и указывает браузеру координаты нужной части изображения. Координаты задаются для левого верхнего угла выбранной части изображения. Первое число означает расстояние по горизонтали, второе - по вертикали.

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

Как создать спрайт для сайта?

В нашем случае выбранная часть находится у левого края спрайта (0 по горизонтали), и на 80 пикселей вниз от верхнего края спрайта.

Указав в качестве второго значения отрицательное число, мы тем самым как бы «подтягиваем» весь спрайт на 80 пикселей вверх. А так как ранее мы строго задали размер видимого изображения 180х20 пикселей, то будет виден не весь спрайт, а только нужная нам кнопка:

Координаты всех изображений на спрайте можно заранее выписать, воспользовавшись линейками в фотошопе.

Если лень возиться, то можно попробовать воспользоваться специальным сервисом - спрайт-генератором . Скармливаете ему ZIP файл со всеми вашими картинками, он сам разместит их на одном общем спрайте и выдаст его вместе с уже оформленным и просчитанным файлом стилей.

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

Что такое CSS спрайты?

Представьте одну, большую картинку, на которой изображены все ваши иконки, разделители, кнопочки, стрелочки и прочие составляющие дизайна. Она грузится вместе с сайтом, все как обычно. Вот только не создает кучу запросов на все файлы, а исполняется одним запросом. Круто? Несомненно. После загрузки в нужном месте отображается нужная часть большой картинки.

Я где-то видел статистику (не вспомню, где, поэтому ссылочку не дам) — от 5 до 40% времени составляет собственно страницы, все остальное — обработка запросов сервером. Логично предположить, если уменьшится количество запросов — скорость загрузки вырастет пропорционально.

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

Плюсы использования спрайтов:

Минусы это технологии:

  • при верстке необходимо указывать не только картинку, но и позицию фрагмента, что не совсем удобно и привычно.
  • увеличение нагрузки на сервер. Большая картинка занимает больше оперативной памяти, учитывая «пустышки» между фрагментами.
  • для изменения одной иконки придется ковырять весь файл, что не слишком удобно. Хотя, может оно и к лучшему

Выбираем, кому чего важнее — простота или скорость и идем дальше. Если с нагрузкой на сервер ничего не поделаешь, то для решения проблем с версткой и изменением спрайтов есть инструменты.

Генераторы спрайтов онлайн сервисы, которые, в принципе, работают по одной схеме. Вы загружаете свой набор картинок, выбираете формат спрайта и система создает картинку и CSS разметку для этого файла.

Где создать спрайты?

Наверное, самый старый инструмент для создания CSS спрайтов. Отличительная черта — есть русский вариант интерфейса, это удобно. Хорошо настраивается, причем не только создание картинки, но и код CSS. В целом — отличный генератор, рекомендую. Кстати, кроме этого, сервис умеет генерировать фавиконы и рассчитывать права доступа для Unix систем.

CSS Sprites Generator

Этот генератор тоже неплох, имеет все необходимые настройки, генерирует на выходе файл чуть меньшего размера, чем предыдущий сервис. Отличительная особенность — удобный вывод кода CSS для каждого изображения.

Достаточно функциональный генератор, позволяющий не только создать обычный спрайт, он дает возможность вам самостоятельно двигать картинки, располагая их максимально компактно. Плюс — умеет выдавать сжатый CSS код, а также SASS код.

Sass - это метаязык на основе CSS, предназначенный для увеличения уровня абстракции CSS кода и упрощения файлов каскадных таблиц стилей.

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

Неплохой генератор, присутствует все, что нужно для создания. Единственный минус — каждую картинку придется загружать отдельно, нельзя загрузить кучей. В остальном — ничего примечательного, крепкий середнячок.

Сервис написан на HTML5, работает только в Chrome и Firefox, но развитие таких сервисов радует. Веб не стоит на месте и это хорошо Очень простой, минимум настроек. Но, если вы хотите быстрое и простое решение — этот генератор подойдет на 100%

Генератор спрайтов для настоящих джедаев Установите программу, укажите путь к CSS файлу со старой версткой и этот сервис все сделает за вас. У него куча возможностей — рекомендую почитать документацию на официальном сайте.

Практически полный аналог Спрайтбокса, тоже используется только для получения кода CSS, с той разницей, что здесь выбор границы элемента осуществляется не вручную, а автоматически, точность отработки заметно выше. Работает только в Хроме и Firefox

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

Очень простой, но понятный и удобный генератор. Перетащите картинки, который нужно объединить, расположите их как вам хочется и нажмите кнопку — спрайт и код готовы. Минус этого сервиса — работает только в Хроме и Огнелисе.

Сервис очень похож на описанный выше SpriteMe, с тем отличием, что тут нужно загружать руками все картинки и CSS файл, который необходимо менять. Минимум настроек, но работу свою он делает хорошо.

Надеюсь, теперь вам не страшна работа с CSS спрайтами и ваши проекты будут еще быстрее.

Компьютерная индустрия в последние годы поднялась очень и очень высоко. Если раньше компьютерные игры были всего лишь развлечением для узкого круга любителей, то сейчас это нечто большее. В них могут играть люди всех возрастов, создаются проекты, которые соответствуют даже самым тонким вкусам. А самое главное, появились невероятные возможности, о которых раньше нельзя было и подумать, поэтому сейчас компьютерные игры могут быть практически неотличимы от реальности в плане графики и физики, они могут погружать пользователя в неизведанные миры, позволяя ему проживать невероятные истории и являться в них ключевым персонажем. Но при этом некоторые люди не хотят ограничиваться самим процессом "играния" - их увлекает процедура создания игр. Однако большинство таких мечтателей так и остаются на уровне фантазий, потому что считают, что данный процесс слишком сложный. На самом деле все не так, что подтверждается огромным количеством инди-разработчиков, которые сейчас производят множество проектов без больших бюджетов и поддержки издателей. Просто нужно начинать с малого и постепенно идти вперед. Из данной статьи вы узнаете, что такое спрайты для игр и как их использовать, чтобы затем начать создавать свои собственные проекты.

Что такое спрайты?

Если перед вами компьютерная игра на мониторе, то что вы видите перед собой? Графическую оболочку данного проекта, разнообразные текстуры, составленные из крошечных пикселей. Если вы планируете создавать компьютерную игру, то вам предстоит много работать с графикой. Но если вы пока что не замахиваетесь на крупный проект, то от вас не требуется идеальной работы с графическими 3D-редакторами. Здесь вам помогут спрайты для игр, которые вы можете скачать в интернете. Но что же это такое? Как их можно использовать и чем это облегчит вам задачу? Спрайты для игр - это готовые текстуры персонажей, предметов и так далее, которые вы можете загрузить на свой компьютер, а затем использовать в процессе создания игры. Это значит, что вам не нужно будет отрисовывать каждый объект в игре, а также каждую фазу его движения - все это уже будет у вас в готовом виде. Как видите, спрайты для игр действительно значительно могут облегчить вам жизнь.

Вид спрайтов

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

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

Как вы прекрасно понимаете, в большинстве случаев вы сможете найти спрайты для игр 2D, так как трехмерные изображения не столь стандартизированы, поэтому понадобится очень много места, чтобы передать все движения одного трехмерного объекта. В то же время работа с двухмерными спрайтами крайне проста. Вам нужно просто загружать спрайты в редактор, в котором вы творите, и склеивать их, создавая эффекты движения. А затем загружать в уровень и наслаждаться результатом.

Переход от спрайтов к графике

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

До того, как в CSS появился псевдокласс:hover , создание ролловера - элемента, который меняет свой вид при наведении курсора - реализовывалось через язык JavaScript. Сейчас это делается намного проще, но есть один недостаток: если в состоянии:hover (т. е. при наведении курсора на элемент) должно появиться какое-то фоновое изображение, то оно начинает загружаться в момент наведения курсора, а не при общей загрузке страницы.

Из-за этого может возникать небольшая задержка при появлении картинки в первый раз. И хотя при всех последующих наведениях курсора этой задержки уже нет, многие разработчики задумались над тем, как устранить эту проблему. Например, с помощью JavaScript можно обеспечить загрузку всех фоновых изображений заранее. Но есть способ, который не требует знаний языка программирования, и заключается он в использовании спрайтов.

Что такое спрайты CSS

CSS-спрайт - это один графический файл, который содержит много различных изображений. В нем могут быть собраны, к примеру, все графические элементы интерфейса, такие как иконки, кнопки и прочее. Также в спрайты часто объединяют фоновые картинки вместе с их вариациями для состояния:hover . Типичные примеры спрайтов:

Спрайт, в котором собраны все используемые иконки Спрайт со значками соцсетей и их вариациями для:hover

Преимущества CSS-спрайтов

  • CSS-спрайт содержит в себе фоновые изображения для различных состояний элементов, и загружается он целиком при загрузке веб-страницы. Это исключает подтормаживание ролловера при первичном наведении курсора на элемент.
  • Сокращается количество обращений к серверу. Ведь для загрузки каждой маленькой иконки требуется отдельный запрос, а чем меньше обращений, тем лучше. Для загрузки спрайта понадобится всего один запрос на сервер.
  • Еще одно преимущество хранения множества картинок в спрайте заключается в том, что если у них похожая палитра цветов, то одно большое изображение будет весить меньше, чем отдельные маленькие картинки в сумме.
  • Всё это в целом положительно влияет на скорость загрузки сайта.

Как создать спрайт из картинок

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

Ручной способ создания спрайтов - занятие довольно долгое. Поэтому, когда использование спрайтов стало набирать обороты, появились онлайн-сервисы по автоматическому созданию спрайт-листов, например, Spritegen , RetinaSpriteGenerator и другие. Вы загружаете необходимые изображения в отдельных файлах на сайт, и для вас генерируется спрайт, который вы сразу можете скачать на компьютер.

Как пользоваться спрайтами CSS

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

HTML-разметка выглядит следующим образом:

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

Переходим к CSS. Первым делом запишем общие стили для всех ссылок:

A { background-image: url(https://goo.gl/1t18Rz); background-repeat: no-repeat; height: 98px; width: 100px; display: inline-block; margin-right: 10px; }

Следующие две строки - высота и ширина каждого элемента . Каким образом определялись эти значения? Здесь мы отталкивались от размеров значков в спрайте. Высота каждой иконки равна 98 пикселям, а ширина - 100 пикселей. Далее мы будем позиционировать фоновую картинку для каждой ссылки, подстраивая фон таким образом, чтобы значок ровно вписался в «окошко» ссылки размером 98×100 пикселей.

A.facebook { background-position: left top; }

Идем дальше: позиционируем фон для ссылки на Twitter. Иконка Твиттера расположена справа от Facebook и примыкает к ней, не создавая пустых промежутков. Нам необходимо переместить спрайт влево на столько пикселей, чтобы скрыть иконку Facebook и полностью заполнить область ссылки иконкой Twitter. Поскольку ширина каждой иконки равна 100 пикселям, то мы и сдвигаем фон влево на 100 пикселей. Вертикальное позиционирование мы пока нигде не меняем, а оставляем значение top:

A.twitter { background-position: -100px top; }

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

A.youtube { background-position: -200px top; } a.instagram { background-position: -300px top; } a.linkedin { background-position: -400px top; } a.tumblr { background-position: -500px top; } a.google { background-position: -600px top; }

Результат работы данного кода показан на скриншоте ниже:


Теперь разберемся с поведением фоновых картинок при наведении курсора на ссылку. Нам нужно смещать спрайт по вертикали вверх таким образом, чтобы в область просмотра попадала иконка из нижнего ряда спрайта. Здесь всё довольно просто и решается одним правилом CSS, а именно присвоением значения bottom свойству background-position-y:

A:hover { background-position-y: bottom; }

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

Результат работающих спрайтов смотрите на демонстрации ниже (для более красивой подачи примера мы сделали сдвиг фона более плавным при наведении курсора):


Если вам стало интересно, то вот и строка, которая отвечает за плавность изменения иконок (не волнуйтесь, чуть позднее мы будем изучать CSS-анимацию, и в частности свойство transition):

A { transition: all 0.2s ease-out; }

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

Вот мы и разобрали основные методы стилизации ссылок. Рекомендуем вам дополнительно попрактиковаться, чтобы закрепить полученные знания. А следующая глава нашей книги посвящена CSS-анимации, реализация которой стала возможна благодаря свойствам, появившимся в CSS3. И в первом уроке мы разберем свойство трансформации -