CSS-спрайты: что это, почему это полезно и как их использовать? - «Верстка»
Меню
Наши новости
Учебник CSS

Невозможно отучить людей изучать самые ненужные предметы.

Введение в CSS
Преимущества стилей
Добавления стилей
Типы носителей
Базовый синтаксис
Значения стилевых свойств
Селекторы тегов
Классы
CSS3

Надо знать обо всем понемножку, но все о немногом.

Идентификаторы
Контекстные селекторы
Соседние селекторы
Дочерние селекторы
Селекторы атрибутов
Универсальный селектор
Псевдоклассы
Псевдоэлементы

Кто умеет, тот делает. Кто не умеет, тот учит. Кто не умеет учить - становится деканом. (Т. Мартин)

Группирование
Наследование
Каскадирование
Валидация
Идентификаторы и классы
Написание эффективного кода

Самоучитель CSS

Вёрстка
Изображения
Текст
Цвет
Линии и рамки
Углы
Списки
Ссылки
Дизайны сайтов
Формы
Таблицы
CSS3
HTML5

Новости

Блог для вебмастеров
Новости мира Интернет
Сайтостроение
Ремонт и советы
Все новости

Справочник CSS

Справочник от А до Я
HTML, CSS, JavaScript

Афоризмы

Афоризмы о учёбе
Статьи об афоризмах
Все Афоризмы

Видео Уроки


Наш опрос



Наши новости

       
8-12-2009, 13:00
CSS-спрайты: что это, почему это полезно и как их использовать? - «Верстка»
Рейтинг:

Вы слышали об этом, но...



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




Думаю CSS-спрайты - это расширение этой техники. Разница в том, что вместо двух или трёх изображений, скомбинированных в одно,
вы можете использовать сколько угодно картинок в одной. Термин "спрайт" пришёл из компьютерной графики и индустрии видеоигр.
Идея была в том, что компьютер может создать изображение в памяти, а затем отображать только его часть, что
гораздо быстрее чем создавать каждый раз новое изображение. CSS-спрайты имеют ту же идею: получить картинку один раз,
отображать для каждого случая свою часть.


Зачем комбинировать эти изображения? Разве не быстрее загружать маленькие?



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



Ниже представлена цитата из статьи "
Performance Research, Part 1":



В таблице 1 для популярных сайтов показано, что время на загрузку html-разметки варьируется между 5% и 38%.
Остальное время (от 62% до 95%) уходит на создание http-запросов для того чтобы подгрузить остальные части документа
(например изображения, скрипты и стилевые файлы). Проблема в том, что браузеры могут одновременно качать только в два
или четыре потока, в зависимости от версии http и самого браузера. Наш опыт показывает, что сокращение числа
http-запросов имеет наибольшее влияние на сокращение времени отклика и зачастую является самым простым способом
увеличить производительность.



Время загрузки популярных сайтов.


Время на загрузку HTML
Время на загрузку остальных компонентов


Yahoo!


Google


MySpace


MSN


ebay


Amazon


YouTube


CNN


10%90%
25%75%
9%91%
5%95%
5%95%
38%62%
9%91%
15%85%


Каждое изображение на странице, будь оно в теге thumb или background-image в вашем CSS-файле -
это отдельный http-запрос на сервер.


Отлично! Итак, как же это сделать?



Давайте начнём с примера. В представленном CSS для каждого элемента используется своё изображение:


#nav li a
{background:none no-repeat left center}
#nav li a.item1
{background-image:url('image1.gif')}
#nav li a:hover.item1	{background-image:url('image1_over.gif')}
#nav li a.item2
{background-image:url('image2.gif')}
#nav li a:hover.item2	{background-image:url('image2_over.gif')}
...


Результат




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


#nav li a
{background-image:url('image_nav.gif')}
#nav li a.item1
{background-position:0px 0px}
#nav li a:hover.item1	{background-position:0px -72px}
#nav li a.item2
{background-position:0px -143px;}
#nav li a:hover.item2	{background-position:0px -215px;}
...


Результат




Таким образом мы уменьшили количество запросов на сервер на 9, и объём загружаемой информации почти на 8 Кбайт.
Но это маленький пример, представьте что будет на реальном сайте.


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



Как однажды сказал Чак Норрис: "Все великие вещи требуют большой самоотверженности". Я конечно не уверен ему ли
принадлежат эти слова, но это в любом случае хороший совет :) Но к счастью для вас, существует множество
веб-сервисов, которые помогают реализовать спрайты без особых усилий. Я остановлюсь на одном - это SpriteMe.


SpriteMe



SpriteMe - это закладка. После того как вы разместите её на панели закладок, отправляйтесь на свой сайт,
а затем нажимайте на неё. Откроется окошко в правой части вашего сайта.




Сверху вы увидите список всех фоновых изображений текущей страницы сайта. Ниже список изображений, которые,
вероятно, невозможно использовать как спрайты, а также причины. Если вы думаете иначе, вы можете перетащить
ссылки из одного списка в другой. После того, как вы собрали необходимые изображения в верхнем списке, вам
остаётся нажать на кнопку "Make Sprite". Всё! Ваши картинки собраны в одну и вы можете её сразу посмотреть




Для текущей версии сайта это изображение может выглядеть так:




И наконец, SpriteMe также позволяет экспортировать CSS. Нажмите на соответствующую кнопку (export CSS) и вы увидите
необходимый код. Например:


.link2article {
background-image: url(/Content/images/Theme/more.png);
background-image: url(http://www.jaredhirsch.com/coolrunnings/public_images/6a02f43daf/spriteme1.png);
background-position: -10px -156px;
}
.articlefooter {
background-image: url(/Content/images/Theme/comments_bg.png);
background-image: url(http://www.jaredhirsch.com/coolrunnings/public_images/6a02f43daf/spriteme1.png);
background-position: 490px -265px;
}


Перечёркнутые строки - это строки из вашего CSS, а ниже предложенные.


Что не может быть спрайтом?



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


Вы слышали об этом, но. Вы действительно понимаете что это такое? Название слегка вводит в заблуждение, потому что спрайты, в данном случае, это не маленькие картинки, а одно большое изображение. Вы, конечно же, встречались с CSS-трюком, в котором для переключения состояния кнопки использовалось одно изображение, которое просто сдвигалось. Думаю CSS-спрайты - это расширение этой техники. Разница в том, что вместо двух или трёх изображений, скомбинированных в одно, вы можете использовать сколько угодно картинок в одной. Термин

Теги: CSS, может загрузку изображение того, том

Просмотров: 1 200
Комментариев: 0:   8-12-2009, 13:00
Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь. Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.

 
Еще новости по теме:



Другие новости по теме: