
Это типа урок) Я толком никогда не писал уроков, но сейчас решил сделать это, потому что ничего хорошего не нашел на тему css спрайтов в рунете.
Что такое CSS Sprites?
Наверняка встречали случаи, когда хотели скачать какую-то иконку с какого-нибудь сайта, а вместо одной нужной вам иконки скачивалась картинка с несколькими изображениями. Так вот это и есть css sprites — картинка, состоящая из нескольких графических элементов сайта. Т.е. мы берем всю постоянную графику сайта и засовываем в один общий png.
Зачем это делается? С первого взгляда может показаться, что это не удобно?Делается это для ускорения работы вашего сайта, путем уменьшения запросов к серверу. Он запросил один раз одну картинку — и вся графика загрузилась за один подход. Лично моё мнение, что это важно для крупных проектов с большой посещаемостью, чтобы пользователи наслаждались серфингом, а не ждали по 5 секунд открытие очередной страницы.
И насчет удобства. Я сперва тоже подумал, что не удобно как-то. Но на практике оказывается наоборот. Я думаю, теперь это станет для меня основным способом верстки.
Как использовать CSS Sprites?
Отображение только нужного вам фрагмента происходит путем указания нужных координат в пикселях.
Использовать спрайты можно в свойстве background, внутри div’ов, стилей и т.д.
Вы не можете вставить нужный фрагмент используя тэг img.
Давайте разберем принцип работы спрайтов на конкретном примере.
Допустим у нас есть 4 пиктограммы. В фотошопе скидываем их в один файл и делаем save for web в формате png-24
![]()
Хорошо. Теперь нам нужно сделать из «плюса» и «минуса» кнопки-ссылки.
Для этого в подключенный к вашему сайту CSS файле создаем стиль «plus» и прописываем ему нашу картинку плюса:
.plus {display:block;width:9px;height:9px;background:url(img/sprite.png) no-repeat scroll -10px 0px;float:left;}
Где sprite.png — общая картинка с 4-мя пиктограммами.
Важно всегда указывать точные значения ширины и высоты (width и height), иначе элементы будут обрезаны.
Обратите внимание на свойство background. В конце «-10px 0px» — это и есть координаты нашего плюса. Первое значение X, второе Y, т.е. отступ по горизонтали и вертикали, соответственно. По вертикали отступа у нас не должно быть, потому что иконка прижата к верхнему краю. А по горизонтали нам нужно «пропустить» иконку минуса и захватить границей 9 на 9 px (width:9px; height:9px;) нужный нам плюс. Вот картинка для пояснения.
![]()
Надеюсь, всё понятно)
Еще хочу рассказать об одной детали с которой столкнулся сам: если у вас есть какие-то фоновые изображения, которые растягиваются, то для них лучше создать отдельный спрайт, потому что в них важно, чтобы они упирались в левый и правый край (при repeat-x). А ваш основной спрайт может быть довольно широким и по причине экономии веса нету смысла такую большую колбасу вашей подложки вставлять туда. Сделайте отдельный png с ними. Вот например:
![]()
И тогда код для третьей сверху розовой плашки будет такой:
#pinkline { height:30px; width:299px; background: url(img/linebg.png) repeat-x scroll 0 -81px; }Ну вот в целом и всё. Есть вопросы - задавайте, будем дописывать урок на ходу)










Ну для блогов ж это не используется? Или как?
Можно использовать для чего угодно. И для блогов тоже.
У меня вот на этом блоге сделано просто, стандартным способом, но думаю в свободное время переверстаю со спрайтами, чтобы побыстрее летал)
Гугля так сверстана например
Да. Много кто так сверстан сейчас. Хабра тоже так.
Ну эт надо когда сложное и тяжелая картинка подгружается, а если легкая . то и так пойдет жа)
да нет, суть не в весе.
Вот наглядный пример:
Тебя мама послала в магазин купить 10 разных булок. И вот ты пошел, купил первый вид булки, понес её домой. Пошел за второй булкой, купил, принес домой. Пошел за 3й. И так далее. Точно так же происходит при стандартной верстке картинок.
А если ты пойдешь, купишь сразу 10 видов булок, положишь их в пакет и дома уже разложишь их на столе, то это будет css Sprite :)
Тебе же не обломно было нести сразу 10 булок, не так уж и тяжело? Скорее обломнее было бы 10 раз ходить туда сюда. Вот так же и тут. Суммарный вес примерно один (в случае спрайтов даже поменьше будет), а количество запросов к серверу сокращается в разы.
О, какой наглядный пример с любимыми булками))
угу, мне тоже понравился))
Классная вещь, нужно пробовать. И еще отличный дизайн, чувствуется художественный вкус. Желаю Вам в ходе марафона найти кучу друзей и перспективных заказчиков. Заглядывайте на огонек на http://opytnaya.ru/
К сожалению, такой подход не позволяет редактировать шаблоны в плане дизайна. Точнее, сделать это можно, но крайне не удобно и долго.
Ну да, могут возникнуть ситуации.
Полезная статья! Всегда думал что к чему в комбинировании иконок в один файл, а тут сразу все стало ясно:)
Спасибо и удачи на марафоне!)
Если я не ошибаюсь, то первая координата по высоте, а вторая по ширине спрайта(картинки).
Нужно только каждый пиксель посчитать, чтобы не съехало никуда..
Да, именно так
Результаты для этой страницы:
Page Speed Score: 58/100
Remove unused CSS
Use efficient CSS selectors
Оптимизируй свой сайт сначала!!!
Какой воинственный комментатор)
Есть специальные сервисы: делают спрайты автоматом..
Михайл, спасибо вам за этот урок. Вы так все мастерски и понятно объяснили, что я это не просто тупо запомнил, а ОСОЗНАЛ! У вас определенно есть талант преподавателя — объяснить так, что все понятно! Огромное вам спасибо! :)))
О, спасибо) Рад, что помог)
Класс! просто, быстро и лаконично — я все понял сразу и легко! Спасибо!
про css sprites я кстати узнал, вы будете смеяться, на goodfuckingwebdesignadvice. Там же один из советов — не пользуейте Dreamweaver — не знаете случайно почему?
Рад, что помогло)
А дримвивер. Не знаю, я пользуюсь в режиме кода, когда верстаю сайт, потому что он подсказывает тэги и их свойства, мне это удобно, т.к я не такой уж прям бывалый верстальщик.
Классно написанная статья )))
Спасибо за труд, теперь мне стало интересно испробовать на практике:)
Пробуйте, главное продумывайте все заранее, а то потом при необходимости что-то поменять придется очень много времени потратить.
Спасибо! Полезная информация!
На здоровье, пользуйтесь :)
Да, я делала,как вы и говорите — ходила в магазин по 10 раз-
теперь не буду. Спасибо большое.
Пожалуйста :) Но css спрайты не всегда удобны, не нужно принимать их безусловно. Они хороши, когда оправданны.
Спасибо большое.
Насчет св-ва scroll Оно позволяет перемещаться фону вместе с содержимым =)
Здравствуйте, на этой страничке помоему вирус. У меня в Опере открывается AdobeReader при посещении. Проверьте на всякий случай.
Да, спасибо, уже нет, почистил.
Зашел недавно в панель управления сайтом на гоудедди. И что бы вы думали? 2011 год на дворе, а у них 67 файлов грузится… за 17 секунд…(именно поэтому я решил проверить почему так долго в первый раз без кеша грузило) из которых 2/3 картинки, которые нормальные люди засовывают в спрайты.