2012-02-20 7 views
1

Я использую CSS-спрайты, однако, когда я наводил на него курсор, он делал еще один запрос на одно и то же изображение и вызывал мерцание. Любая идея, почему он делает 2 запроса? Вот мой код:CSS Sprites все еще новые запросы

.btn-red-lrg .left {background:url(../images/site-sprite.png) no-repeat 0px 0px transparent;width: 9px;}  
.btn-red-lrg:hover .left {background:url(../images/site-sprite.png) no-repeat 0px -37px transparent;width: 9px;} 

ответ

5

Не используйте background-shorthand. Вместо этого используйте background-position, так как вы хотите обновить позицию.

/* no need for width, background-image etc. */ 
.btn-red-lrg:hover .left {background-position: 0px -37px;} 

Указание background-image:url(...) на :hover псевдо-классе может привести к новому требованию, если механизм кэширования не является достаточным или срок годности отсутствует/неправильно (см Jeff's answer). Изменение только позиции не приведет к новому запросу независимо от браузера.

+0

Хотя это хорошая практика, как делает этот адрес вопрос? – Jeff

+1

@Jeff: указание «background-image: url (...)» в псевдокласс класса ': hover' может привести к новому запросу браузера, если механизм кэширования недостаточен или (как вы указали в ваш ответ), дата истечения срока действия отсутствует или неверна. Изменение только позиции не приведет к новому запросу независимо от браузера. Но вы правы, я не ответил на вопрос * «Любая идея, почему он делает 2 запроса?» *, Мой плохой: /. +1 на ваш ответ. – Zeta

+0

@Zeta большой улов! это и сделал трюк. Спасибо! –