我有一个css类,如:
.foo {
background-color: red;
}
然后我有一个为列表指定的类:
.list1 li {
background-color: tan;
}
是否可以将一个样式类设置为指向另一个?类似的东西:
.list1 li {
.foo;
}
不确定如何表达 - 我只是希望.list li样式是我为.foo类定义的。
答案 0 :(得分:29)
您可以使用selector grouping:
.foo, .list1 li {
background-color: red;
}
答案 1 :(得分:10)
答案 2 :(得分:5)
没有任何类似的语法(并且不要将“类”(HTML术语)与“类选择器”或“规则集”混淆。)
答案 3 :(得分:4)
您可能希望查看CSS预处理器,例如SASS或LESS。您可以定义可在整个代码中使用的变量。当您熟悉它时,它可以大大加快您的编码速度。
使用SASS:
$darkred : #841c14;
.box {
background: $darkred;
}
答案 4 :(得分:2)
Afaik,这是不可能的(还)我希望将来会这样。我总是只是将我想要的任何内容复制+粘贴到所需的选择器中,或者一个接一个地放置选择器名称:
.foo,
.li,
.whatever
{styles}
也许其他人有另一个建议。
答案 5 :(得分:1)
据我所知,继承是CSS不支持的(至少2.1)
答案 6 :(得分:1)
不,你不能但是你可以使用命名不同的类来覆盖它,例如
.foo {
background-color: red;
}
.list1 li {
background-color: tan;
}
class ="list1 foo"
答案 7 :(得分:0)
帮助澄清覆盖的含义,如果你想.list1 li来携带foo的所有样式,但只想将它的颜色改为棕褐色,我会这样做:
<span class = "foo">
<span class = "list1"><!--or whatever name you have for your new style-->
TEXT WITH INHERITED STYLE GOES HERE
</span>
</span>
答案 8 :(得分:0)
如果您无法控制'foo'的定义,上述解决方案将不可用。
因此,如果可以接受JQuery解决方案,则只需将原始类应用于新类/上下文的所有实例。在这种情况下:
$('.list li').addClass('foo')
答案 9 :(得分:0)
我有一个小扩展@Frank Carnovale解决方案(无需更改CSS)。页面加载后:
$(function () {
$('.list li').removeClass('old1 old2 ...')
$('.list li').toggleClass('foo1 foo2 ...')
}
另请参阅Does addClass in JQuery override any existing css class based styles?