css спрайты (css sprite)
В этой статье я подробно расскажу, что же такое
css спрайты, каким образом ними пользоваться и в чем Вы от этого выиграете при создании своего сайта.
css спрайт (css sprite) - одно изображение, которое включает в себя несколько логически связанных изображений, используемых
для создания эффекта анимации при наведении курсора на элемент.
Существует два способа для создания эффекта анимации при наведении курсора на ссылку:
Первый способ известен всем и заключается в том, что для ссылки устанавливается фоновое изображение, а при наведении, для псевдокласса :hover
это изображение меняется на другое. Тем самым создаётся эффект анимации.
Суть второго способа заключается в том, что используется одно фоновое изображение вместо двух. И эффект анимации создаётся путем изменения положения фонового изображения.
Преимущества css спрайтов
На первый взгляд может показаться, что страница грузится быстрей, если изображения загружаются только тогда, когда они нужны, но это не так, потому что для каждой загрузки создаются дополнительные
HTTP запросы, а это ухудшает эффективность вашей страницы. Одно изображение, конечно же, весит больше чем два, но не на столько, что это может ускорить загрузку страницы.
Исходя из этого можно сформулировать первое преимущество использования
css спрайтов над двумя разными изображениями:
Использование css спрайтов ускоряет загрузку страницы.
Использование css спрайтов создает дополнительное удобство для управления эффектом, так как намного легче изменить с помощью css положение фона, чем использовать новое изображения.
Второе преимущество:
Простота использования css спрайтов
css спрайты в действии
css спрайты используются чаще всего для ссылок, а чаще именно для меню, и для элементов, которым нужно придать различное оформления для разных ситуаций. Далее я подробно распишу эти два случая.
css спрайты для ссылок
В качестве примера я буду использовать следующее изображение для создания спрайтов. Как Вы могли заметить, исходное изображение состоит из двух изображений: для обычной ссылки и для активной ссылки.
a.sample-spite {
background:url('/images/sprite_sample.jpg') 0 0 repeat-x;
width:246px;
height:29px;
display:block;
font-size:10px;
line-height:29px;
color:#FFFFFF;
font-weight:bold;
text-transform:uppercase;
text-align:center;
text-decoration:none;
}
a.sample-spite:hover {
background-position:0 -30px;
}
Выше я привел пример css стилей для ссылки, в которой используется css спрайт. Как видите стили очень простые, но нас больше всего интересует код, описынный в строках 2 и 15.
Во второй строке прописывается путь к фоновому изображению, а в 15 строке указано, как должно изменятся положение фона при наведении курсора на ссылку. В этом и состоит весь принцип работы
css спрайтов -
изменение положения фона.
Теперь можно в html документе для любой ссылки поставить класс
sample-spite
<a href="#" class="sample-spite">Пример css спрайта</a>
и в результате в браузере вы увидите следующее:
Различное оформление элементов с помощью css спрайта
Этот способ тоже очень часто используется как и для ссылок. Он заключается в том, чтоб придать различное оформление для элемента в зависимости от его местоположения. Я покажу на примере, как с помощью
css спрайтов
это можно сделать.
В качестве примера я буду использовать следующее изображение:
Как видите здесь я включил в "спрайтовое изображение" три изображения. Далее я создам таблицу с тремя колонками и покажу, как можно с
помощью
css спрайтов сделать разное оформление для заголовков разных колонок.
.sample-sprites-table td h6
background:url('/images/sprite_sample_2.gif') 0 0 no-repeat;
padding:0 0 0 25px;
font-size:10px;
line-height:18px;
color:#000000;
font-weight:bold;
text-transform:uppercase;
}
#sample-column-2 h6
background-position:0 -19px;
}
#sample-column-2 h6
background-position:0 -38px;
}
<table class="sample-sprites-table">
<tr>
<td><h6>Заголовок css спрайта</h6></td>
<td id="sample-column-2"><h6>Заголовок css спрайта 2</h6></td>
<td id="sample-column-3"><h6>Заголовок css спрайта 3</h6></td>
</tr>
</table>
Как видите, здесь код тоже очень простой для понимания, большинство стилей используется для оформления стилей заголовков. По умолчанию, для всех заголовков шестого уровня я установил фоновое изображение, показанное выше.
И далее с помощью
id для колонок и изменения положения фона, я изменил оформление заголовков в зависимости от того, в какой колонке он находится.
Заголовок css спрайта |
Заголовок css спрайта 2 |
Заголовок css спрайта 3 |
Этот
способ применения css спрайтов отличается от предидущего тем, что в первом примере изменяется положение фонового изображения в зависимости от действия (в нашем случае наведение курсора на ссылку), а во втором -
в зависимости от расположения заголовка.
Добавить комментарий
Комментарии
Заходите на cssclub.ru будем делать сеть для верстальщиков. Ответить | Ответить с цитатой | Цитировать
з.ы. В листинге стилей sample-column-2 напсано два раза Ответить | Ответить с цитатой | Цитировать
автору спс Ответить | Ответить с цитатой | Цитировать
Например код для jQuery.
$(document).ready(function( ){
$.preloadImages = function(){
var preload = [
'/images/img_2.png',
'/imgaes/img_3.png',
…
];
$(document.createElement('img')).bind('load', function(){
if(preload[0]) this.src = preload.shift();
}).trigger('load');
}
$.preloadImages() ;
}); Ответить | Ответить с цитатой | Цитировать
Цитирую Alex:
не смешите меня и учите матчасть: ваши скрипты весят не один десяток кб, это раз, во-вторых не забываем про косяки со скриптами, в третьих, есть такая вещь для background-position: как left, right и тд, что позволяет обьединять по 2-3 картинки в одну, дописывать пару строк в css, и не париться с позиционировани ем. э-эх
Ну а в целом если вы такой упоротый, то извращайтесь спрайтами дальше, мне то что. :) Ответить | Ответить с цитатой | Цитировать
Ммм, отнюдь не диалап. Но Вы внимательно посмотрите в статистику Google.Analitycs например, и заметите, что большое количество людей - используют медленное соединение, а если спросить пользователей Yota, как у них со скоростью - тоже иногда говорят, что как диалап. И зачем мне jQuery, если я сделаю за пару минут тот же функционал без скриптов и так далее? И ещё, посетите проект webo.in, там вам всё расскажут и покажут) Ответить | Ответить с цитатой | Цитировать
Представьте просто такую ситуацию: сидит в городе n-ск клиент Вашего заказчика, и вот заходит он на сайт Ваш, с использует диалап( ну нет у них выделенки, нет) и ждёт, пока страница загрузится…Хотя впрочем это Вам решать. Но вообще, я противник использования скриптов без большой необходимости, даже все менюшки выпадающие делаю на css.
По поводу webo.in - ну кто говорит, что это последняя инстанция, есть FireBug+Yslow, там ставят "двойки" сайтам
Да и ссылку я давал скорее для того, чтобы Вы изучили статьи, находящиеся там, а в частности утверждение о большой конверсии при бОльшей скорости загрузки, а не предлагал Вам пользоваться данным сервисом. Хотя как правило, дизайнерам "пофигу" на верстальщиков, верстальщикам "пофигу" на маркетологов, пытающихся выжать из сайта все соки, чтобы он принёс максимальную прибыль. Ответить | Ответить с цитатой | Цитировать
Я рад, что Вы так образованны
RSS лента комментариев этой записи.