Псевдо элемент для вывода спрайтов

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

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

Спрайты оказываются ошибочным решением, когда используются для элементов с неизвестными и шириной и высотой. Рассмотрим параграф (<p></p>). Вы можете использовать резиновый шаблон, что приведет к сложностям в вычислении ширины (даже если вычислить ширину параграфа, то растягивание спрайта на весь параграф перечеркнет все преимущества спрайта).  А параграф может иметь любое количество слов, поэтому жестко определить его высоту также не представляется возможным. Но даже в таких условиях можно использовать спрайты для описанного элемента.

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

<p>
   <span class="star"></span>
   Текст...
</p>

И уже для такой структуры задействовать код CSS, который будет устанавливать спрайт для элемента <span>

    .star {
       
       /* Размер звезды в спрайте */
       width: 22px;
       height: 22px;
    
       /* Спрайт */
       background: url(images/sprite.png) -24px 0 no-repeat;
       
       /* Позиционирование/Отступы */
      float: left; 
      margin: 0 10px 2px 0; 
    }

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

Изменим предыдущий код разметки так, чтобы он был более семантическим:

<p class="star">
   Текст...
</p>

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

    .star:before {
       /* Пустое содержание, которое нужно для того, чтобы псевдо элемент был выведен на экран */
       content: "";
       
       /* Размер звезды в спрайте */
       width: 22px;
       height: 22px;
    
       /* Спрайт */
       background: url(images/sprite.png) -24px 0 no-repeat;
       
       /* Позиционирование/Отступы */
      float: left; 
      margin: 0 10px 2px 0; 
    }

 

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

Отличный метод, но он имеет следующие недостатки:

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

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

Метод с псевдо элементом не имеет указанных недостатков.

Источник: http://feedproxy.google.com/~r/ruseller/CdHX/~3/lwkZ5IeaB8s/lessons.php

Читать комменты и комментировать

Добавить комментарий / отзыв



Защитный код
Обновить

Псевдо элемент для вывода спрайтов | | 2012-06-19 12:05:03 | | Статьи Web-мастеру | | Наверняка вы знаете, что такое спрайт CSS? Они просто великолепны в использовании, когда известная высота и ширина элементов, для которых спрайты применяются. Потому что вы можете сделать очень | РэдЛайн, создание сайта, заказать сайт, разработка сайтов, реклама в Интернете, продвижение, маркетинговые исследования, дизайн студия, веб дизайн, раскрутка сайта, создать сайт компании, сделать сайт, создание сайтов, изготовление сайта, обслуживание сайтов, изготовление сайтов, заказать интернет сайт, создать сайт, изготовить сайт, разработка сайта, web студия, создание веб сайта, поддержка сайта, сайт на заказ, сопровождение сайта, дизайн сайта, сайт под ключ, заказ сайта, реклама сайта, хостинг, регистрация доменов, хабаровск, краснодар, москва, комсомольск |
 
Поделиться с друзьями: