2010-01-27 44 views
2

我有一个CSS类规则:我如何从css id规则继承属性到css类?

.test{ text-align:center; font-family:Verdana; } 

,我想创建另一个ID规则(我希望它是由“ID规则”对主叫):

#divNew1{ color: Red; } 
#spanNew2{ color: Green; } 
#pNew3{ color: Yellow; } 

我有很多的div元素。我想通过只改变css文件将.test类属性传递给其他元素。这就是为什么我不想为div元素添加class属性的原因。下面的HTML代码:

<div id="divNew1">Ta ta taaaaa</div> 
<span id="spanNew2">Ta ta taaaaa</span> 
<p id="pNew3">Ta ta taaaaa</p> 

但我想通过继承,我不希望类属性添加到div等作为上面添加。测试类属性#divNew类。 有没有办法做到这一点?

+0

不幸的是,CSS不是一个合适的OOP语言,它根本不被认为是一种编程语言。你不能真正将你从PHP或其他语言知道的东西应用到它。它真的有自己的风格。 – 2010-01-27 14:40:26

回答

7

只需在上层声明中包含ID类,即任何属性的最后声明获胜。例如。如果第一条规则有color: Green;,.test将是绿色,则#divNew仍然是红色。

.test, #divNew{ text-align:center; font-family:Verdana; } 
#divNew{ color: Red; } 
+0

打我吧:( – Chris 2010-01-27 14:33:45

+0

你知道这样的面向对象的继承:“类NewClass:OldClass”或在Java“类NewClass extends OldClass”。有没有办法做到这一点? – uzay95 2010-01-27 14:34:15

+0

你不能,你可以使用嵌套类,例如

这将把两个样式声明合并到div – 2010-01-27 14:36:03

0
<div id="divNew" class="test">Ta ta taaaaa</div> 
+0

但是您没有使用继承来创建id规则? – uzay95 2010-01-27 14:29:52

+0

对不起......你是对的。尼克是对的。在CSS中,要声明的最后一个样式将被继承。 – jay 2010-01-27 14:36:58

0

不知道理解你,但:

.test{ text-align:center; font-family:Verdana; } 
#divNew.test{ color: Red; } 
2

我相信这个问题是,我可以“#divNew” CSS规则继承现有“测试”的规则,这样的特性:

[Psuedo Code] 

.test { color: red; } 

#divNew : .test { border: 1px solid Black } 

...导致id为#divNew的元素同时获得红色文本和黑色边框。

答案是否定的 - 没有语法来声明另一个规则继承一个规则 - 但是您可以将多个CSS规则应用于一个元素。

在此示例中,该元素将采用“#divNew”和“.test”和“.another”的规则。它会覆盖任何与CSS中最后一条规则相冲突的属性。

<div id="#divNew" class="test another">... 
1

LESS/dotLess允许您使用CSS样式语法在服务器端的CSS文件中执行额外的处理。 LESS。我从菲尔哈克链接到带点,但我无法找到目前一个有效的链接(http://www.dotlesscss.com/快到了空对我来说)

编辑

或者T4CSS

1

你这是什么意味着继承?如果在HTML中#divNew是.test的孩子,那么.test的CSS属性已经被它继承了(除非你通过设置特定的#divNew属性来覆盖它们)。

语法用于添加直接#divNew性质,这也是。测试:

#divNew.test {/*properties*/} 

语法用于添加属性#divNew这是一个孩子。测试:

.test #divNew {/*properties*/}