CSS спрайты фон и селекторы
Заранее благодарю вас за любую помощь, которую вы можете оказать. Я впервые внедряю спрайты и хочу упростить свой код. Ниже приведены мои css и html.
CSS
div[class^='Rating']
{
background:url('http://10.0.50.19/images/Ratings.png') no-repeat;
width:68px;
height:13px;
display:block;
}
.Rating0_5 { background-position: 0px 0px; }
.Rating1_0 { background-position: 0px -13px; }
.Rating1_5 { background-position: 0px -27px; }
.Rating2_0 { background-position: 0px -41px; }
.Rating2_5 { background-position: 0px -55px; }
.Rating3_0 { background-position: 0px -69px; }
.Rating3_5 { background-position: 0px -83px; }
.Rating4_0 { background-position: 0px -98px; }
.Rating4_5 { background-position: 0px -112px; }
.Rating5_0 { background-position: 0px -125px; }
HTML
<div class="Rating0_5"></div>
<div class="Rating1_0"></div>
....
Проблема, с которой я сталкиваюсь, заключается в том, что фоновая позиция всегда устанавливается в 0px 0px
, поскольку я считаю, что первый стиль переопределяет элементы фоновой позиции (согласно Firebug). Если я копирую копировать background:url('http://10.0.50.19/images/Ratings.png') no-repeat;
в каждый из стилей .RatingX_X
это работает нормально, но я не хочу повторять background-image
и повторите текст, если мне не нужно. Надеюсь, это имеет смысл. Спасибо снова.
2 ответа:
Самый простой и самый кроссбраузерный способ-добавить общий класс к элементам (
<div class="Rating Rating0_5"></div>
), а затем просто изменитьdiv[class^='Rating']
на.Rating
.Ваше другое возможное решение состоит в том, чтобы исправить специфика селектора в вашем коде. Либо используйте просто
[class^='Rating']
, либо запишите селекторы классов какdiv.Rating0_5
.
Определите свое первое правило следующим образом:
И это должно сработать.div[class^='Rating'] { background-image:url('http://10.0.50.19/images/Ratings.png'); background-repeat: no-repeat; width:68px; height:13px; display:block; }
На вашем
background:
Вы не определяете позицию, поэтому он предполагает, что она находится на 0 0 по умолчанию, и поскольку ваш первый селектор больше задан в качестве селекторов фоновой позиции, он переопределяет.