2010-12-03 3 views
3

Я большой любовник спрайтов, но. Подумал, я делаю все длинную руку, поэтому было интересно, есть ли ярлык.Вопрос Css Sprite, есть ли лучший способ?

По существу, создание спрайта очень просто. Сделать работу спрайтов легко, но делать много спрайтов, становится трудоемким.

Так было интересно, какой самый чистый способ сделать несколько спрайтов, что я могу позиционировать в любом месте на наших веб-страницах. Я видел несколько листов спрайтов, похожих на jquery ui, но у нас есть свои собственные значки. Так было интересно, был ли более чистый метод.

Все, у нас будет около 16-20 спрайтов в комплекте. Ниже приведен пример html и css.

 
#logo-link 
{ 
    width:32px; 
    height:32px; 
    text-decoration:none; 
    display:block; 
    background-image:url(sprites/analytics.png); 
    background-position:0 32px; 
} 
#logo-link:hover,#logo-link:active { background-position:0 0; } 

#logo-link2 
{ 
    width:32px; 
    height:32px; 
    text-decoration:none; 
    display:block; 
    background-image:url(sprites/addlisting.png); 
    background-position:0 32px; 
} 
#logo-link2:hover,#logo-link2:active { background-position:0 0; } 

HTML

<a href="link1.html" id="logo-link"> </a> 

<a href="link2.html" id="logo-link2"> </a> 

Любые мысли, на уточнении наших спрайтов. Или мы должны создать лист спрайтов со всеми спрайтами?

образец изображения:

alt text alt text

Добавлена ​​базовая спрайтов лист на оси х

alt text

Пример:

alt text

Ok Guys:

До сих пор у меня есть это в CSS:

 
.sprite 
{ 
    width:32px; 
    height:32px; 
    text-decoration:none; 
    display:block; 
    background-image:url(sprites/spritesheet.png); 
} 

.addlisting{background-position:0 32;} 
.addlisting:hover{background-position:0 0;} 
.addanalytics{background-position:64 32;} 
.addanalytics:hover{background-position:64 0;} 
.addprofile{background-position:32 32;} 
.addprofile:hover{background-position:32 0;} 

HTML У меня есть:

<a href="link2.html" class="sprite addlisting"> </a> 

<a href="link2.html" class="sprite addanalytics"> </a> 

<a href="link2.html" class="sprite addprofile"> </a> 

То, что я действительно не получаю (см spritesheet.png я сделал выше , поэтому профиль находится в координатах 32,32 и почему аналитика находится в координатах 64,32

Возможно, у меня есть мои координаты неправильно lol

Это фактический спрайт лист теперь сводит меня с ума сейчас, argghhh

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

[! alt text] [5]

Наконец-то выяснилось.

+0

Что-то связаны между собой, если вы хотите получить спрайтов х и у в легкости, использовать инструменты, как http://www.getspritexy.com/ – kiranvj 2012-07-26 07:24:13

ответ

1

Вы можете комбинировать селектора так.

#logo-link,#logo-link2 
{ 
    width:32px; 
    height:32px; 
    text-decoration:none; 
    display:block; 
    background-position:0 32px; 
} 
#logo-link:hover,#logo-link:active,#logo-link2:hover,#logo-link2:active {background-position:0 0;} 

#logo-link{background-image:url(sprites/analytics.png);} 
#logo-link2{background-image:url(sprites/addlisting.png);} 

В качестве альтернативы вы можете добавить класс с именем спрайт

.sprite 
{ 
    width:32px; 
    height:32px; 
    text-decoration:none; 
    display:block; 
    background-position:0 32px; 
} 
.sprite:hover,.sprite:active {background-position:0 0;} 

#logo-link{background-image:url(sprites/analytics.png);} 
#logo-link2{background-image:url(sprites/addlisting.png);} 

И HTML-

<a href="link1.html" id="logo-link" class="sprite"> </a> 

<a href="link2.html" id="logo-link2" class="sprite"> </a> 

Редактировать: Вот еще одна альтернатива, если вы планируете использовать спрайт-лист.

.sprite 
{ 
    width:32px; 
    height:32px; 
    text-decoration:none; 
    display:block; 
    background-image:url(spritesheet.png); 
} 
.analytics{background-position:0 0;} 
.analytics:hover{background-position:0 0;} 
.addlisting{background-position:0 0;} 
.addlisting:hover{background-position:0 0;} 

HTML:

<a href="link2.html" class="sprite addlisting"> </a> 

И jsfiddle http://jsfiddle.net/gJkCZ/

3

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

Кроме того, что касается вашей таблицы стилей, может быть проще иметь мастер-класс ссылок, который устанавливает все, кроме свойства background-position. Это уменьшит размер CSS и упростит его модификацию в будущем.

+1

Да , это имеет смысл, и я понимаю, чем меньше запросов на URL, тем лучше. Проблема заключается в создании листка спрайта. Поиск в Google не сильно зашел. Я борюсь за понимание позиций ссылочного сюжета, для спрайтов. Создать один мастер-лист в сером и один в синем? Затем привязывайте их отдельно к их координатам с эффектом зависания. Если да, то какое положение графика я ссылаюсь, внизу слева от изображения, сверху справа и т. Д. И т. Д. – 422 2010-12-03 23:31:26

+1

Лист спрайта может быть сконструирован любым способом. Вы можете использовать любой интервал между размерами, в том числе без интервала. Макет листа полностью зависит от вас. Я рекомендую использовать только один лист.Например, вы можете создать один лист с голубыми изображениями и преобразовать его в оттенки серого. Затем вы можете объединить листы в один. – 2010-12-03 23:36:00

+0

Хорошо, основы, которые я понимаю. Мои изображения 32px x 32px. Так что фигурировал, я бы создал сетку 4 x 4 синим цветом, без прокладки между ними, поскольку изображения, естественно, не попадают в границы. Тем не менее, я не понимаю, как я буду ссылаться в терминах css, на строку справки 3 колонки 1. Если это имеет смысл, и какой точкой на этой сетке является контрольная точка для создания спрайта. Я просто иду, x = 128 y = 96 (px) по существу? Итак, положение фона: 128 96; – 422 2010-12-03 23:41:41

0

Если вы работаете в asp.net тогда был выпущен недавно рамки, которая посвящена работе с этой проблемой. Его вызов ASP.NET Sprite & Image Optimization Framework:

Подход оно принимает следующим образом:

  • Вы можете создать образы как обычные отдельные изображения
  • Рамка охватывает всех ваших отдельных лиц al, объединяет их в лист спрайтов и генерирует css для него
0

Это лучший способ, который я выяснил. В основном потому, что каждое изображение в главном меню (http://www.kintek.com.au) отличается от ширины, я указываю ширину и положение фона на #id.

Css

ul.menu li a{ 
    background: url(/images/menu/nav.png) no-repeat; 
    height:77px; 
    display:block; 
    text-indent:-9999px; 
} 
a#home{width:73px;background-position:0 -3px;} 
a#home:hover, a#home.selected {background-position:0 -83px;} 

a#services{width:90px;background-position:-231px -3px;} 
a#services:hover, a#services.selected {background-position:-231px -83px;} 

Markup

<li><a id="home"?> title="Kintek Web Design, Brisbane">Home</a></li> 
<li><a id="services" class="selected">Services</a> 
Смежные вопросы