对不起,但不管我多久阅读一次,我都不会理睬它。CSS属性的继承?
我宣布
.submit_button
{
font: 12px Arial;
margin:0px;
padding:2px;
}
,现在我要声明centered_submit_button
从submit_button
继承,并增加了margin-left:auto; margin-right:auto;
请怜惜我...
对不起,但不管我多久阅读一次,我都不会理睬它。CSS属性的继承?
我宣布
.submit_button
{
font: 12px Arial;
margin:0px;
padding:2px;
}
,现在我要声明centered_submit_button
从submit_button
继承,并增加了margin-left:auto; margin-right:auto;
请怜惜我...
不幸的是,香草CSS没有按”没有任何继承的概念,但你可以用这个来实现你所需要的:
.submit_button, .centered_submit_button
{
font: 12px Arial;
margin: 0px;
padding: 2px;
}
.centered_submit_button
{
margin-left: auto;
margin-right: auto;
}
这可能是你需要的所有东西,但是如提到的scurker,有一些CSS增强工具,如LESS,它们提供类似继承的构造以及许多其他很好的功能,可以提高你的网络生活质量开发商。
在这种情况下,少即是具有讽刺意味的更详细的,但可以说更具表现力:
.button()
{
font: 12px Arial;
margin: 0px;
padding: 2px;
}
.submit_button
{
.button;
}
.centered_submit_button
{
.button;
margin-left: auto;
margin-right: auto;
}
另一个类似的工具是Stylus,其中承担了大部分的东西更不是,但也有关于使用标点符号很无所谓的态度在你的语法:
button()
font 12px Arial
margin 0px
padding 2px
.submit_button
button
.centered_submit_button
button
margin-left auto
margin-right auto
均不及手写笔有客户端的JavaScript实现,所以你必须直接托管.less
或.stylus
文件或编译t时的选项在服务器上摆放并托管所产生的CSS。
它不工作得很像。在这个意义上,在CSS中没有继承的概念。但是,你可以做什么,是定义.submit_button
和.centered_submit_button
的共同属性,然后重新定义你想要做不同的事情,因为只有.centered_submit_button
,像这样:
.submit_button, .centered_submit_button
{
font: 12px Arial;
margin:0px;
padding:2px;
}
.centered_submit_button
{
margin-left:auto;
margin-right:auto;
}
我不知道这些人说你在CSS中不能做继承是怎么回事。当然,CSS不称之为继承,但你仍然可以达到同样的效果。这一切都取决于一个名为CSS specificity的主题,该主题表示当规则冲突时,将应用最具体的规则。
在你的情况,你可以做这样的事情:
.submit_button
{
font: 12px Arial;
margin:0px;
padding:2px;
}
.submit_button.centered
{
margin: 0 auto;
}
给出的第一条规则定义与submit_button
类的所有元素的样式。第二条规则适用于所有具有submit_button
类和centered
类的元素。在一个元素上有多个类是完全有效的HTML和CSS(只需用HTML class
属性中的空格分隔类名)。现在,第二条规则比第一条更具体,因为它符合第一条规则所做的一切(submit_button
类)以及其他更多内容(centered
类)。因此,centered
类的margin
规则中的冲突通过在0
之上取0 auto
来解决。
一旦您熟悉它的工作原理,特异性就非常强大。它确实有助于减少您刚刚描述的情况下的代码。
特异性对于了解有一定的重要性,但我认为它与继承非常相似。在你的例子中,你必须为你的元素应用2个类,并且有可能.centered也有其他规则。从概念上讲,我认为这不像人们发布的其他方法那样更像继承,但无论如何它很有意思。 – 2011-05-28 06:34:12
你错过了。在center_submit_button的第一个实例中。 – 2011-05-28 04:02:51
谢谢,它已被修复 – namuol 2011-05-28 04:09:52