从多个语句中应用多个CSS3 Background-Image

时间:2011-03-08 15:49:59

标签: css3 css-selectors css

我想使用多个CSS3背景图像,并且在两个不同的声明中这样做是有语义意义的:

#brands > ul > li:nth-child(odd) {
    background-image: url(img/logo/divide.jpg) no-repeat left center, url(img/logo/divide.jpg) no-repeat right center;
}

#brands .name {
    background:url(img/logo/name.jpg) no-repeat center;
}

但是第二个声明会覆盖第一个声明。有没有办法在CSS中解决这个问题?

2 个答案:

答案 0 :(得分:3)

您的选择器很好,但您的错误在第一个声明中:

background-image: url(img/logo/divide.jpg) no-repeat left center, url(img/logo/divide.jpg) no-repeat right center;

您需要使用简写background属性而不是background-image,因为您要指定一堆其他值以及图像。你的第二个规则似乎覆盖第一个规则的原因是因为第一个规则无效,因此实际上完全被忽略了。

你可能(因为Groovetrain says)必须添加另一个规则来组合这两个,但我最近并没有修改过多个背景,所以我不能肯定地说一个如何覆盖/整合另一个。

答案 1 :(得分:0)

您可能需要添加一条附加规则来说明正在应用的“名称”类。像这样:

#brands > ul > li:nth-child(odd) {
  background-image: url(img/logo/divide.jpg) no-repeat left center, url(img/logo/divide.jpg) no-repeat right center;
}

#brands .name {
  background:url(img/logo/name.jpg) no-repeat center;
}

/* This one has all three bg images */
#brands > ul > li.name:nth-child(odd) {
  background: url(img/logo/divide.jpg) no-repeat left center, url(img/logo/divide.jpg) no-repeat right center, url(img/logo/name.jpg) no-repeat center;
}