Главное преимущество спрайтов - это уменьшение количества HTTP запросов к серверу для получения картинок. Это конечно незначительно уменьшает скорость загрузки страницы, но представте, что у вас 100 маленьких картинок(допустим, иконок). Объеденив их, например в 4 картинки включающие по 25 иконок, Вы уменьшаете количество запросов в 25 раз, а это уже что-то.
Ну давайте наконец перейдем к делу.
Давайте отобразим 4 верхних смайлика и установим ховер (hover) на каждый из них. Псевдокласс будет менять каждый смайлик на нижестоящий.
Вот HTML конструкция:
<ul>А вот фрагмент CSS кода:
<li><a class="happy" href="#"></a></li>
<li><a class="green" href="#"></a></li>
<li><a class="punk" href="#"></a></li>
<li><a class="sad" href="#"></a></li>
</ul>
ul li { list-style:none; float:left; }Как Вы заметили, я задал всем элементам "а" фон с картинкой smileys.png которая показана выше. Должно получится следующее:
ul a { display:block; display:block; height:96px; width:96px;
background:url("smileys.png") no-repeat; float:left;
}
Теперь немного пояснения. Размеры наших элементов "а" - 96х96 пикселей. Свойство background-position по умолчанию имеет значение 0. Это значит, что фон для элемента будет начинаться с верхнего левого угла нашей картинки. Вот почему все 4 смайлика будут одинаковыми.
Теперь попробуем изменить 3 последних смайлика используя ту же картинку.
ul a.happy { } /* с первым у нас и так все нормально */Заметьте, что я установил именно отрицательное значение по оси Х. Это потому, что мы двигаем не элементы по фону, а сам фон под элементом. Допустим, для зеленого смайлика нам необходимо сдвинуть фон влево ровно на 96px. Должно отображаться следующее:
ul a.green { background-position:-96px 0; }
ul a.punk { background-position:-192px 0; }
ul a.sad { background-position:-288px 0;}
Ну а теперь добавим псевдокласс hover для каждого элемента "а":
ul a.happy:hover { background-position:0 -96px; }Теперь я сдвинул background вниз на 96 пикселей для каждого из классов, а значение Х оставил прежним. В конечном результате у вас должно получиться следующее:
ul a.green:hover { background-position:-96px -96px; }
ul a.punk:hover { background-position:-192px -96px; }
ul a.sad:hover { background-position:-288px -96px; }
Рабочий пример
Вот так можно удобно пользоваться спрайтами. Главное правильно расположить картинки чтобы в дальнейшем их возможно было использовать. Например, для кнопки состоящей из 3-х картинок (предыдущая статья) можно использовать такой спрайт:
Сверху расположены правая и левая часть кнопки, снизу - середина.
Надеюсь, что моя статья была вам интересна и вы что-то из нее почерпнули. Если нет, то смайлики определенно должны были вас порадовать :).
2 комментария:
неплохо. полезная техника. как-то смотрел картинки, которые в интерфейсе gmail идут - там с ума сойти можно. Все рисунки в одну картинку слеплены ))
Отправить комментарий