2012-09-12 50 views
4

这篇文章(尽管它是基于一个事实导致我在工作中遇到麻烦)更多的是哲学问题而不是真正的问题提交。Css规则应用程序订单

我碰到这个令人费解之后震荡下跌的情况下...

这是不是真的,因为我(我认为)理解这一现象的一个问题,它是如何统治,它有效果。

我做了以下示例:http://jsfiddle.net/q7xAn/尽可能描述。

在这种情况下,为什么(Ô上帝为什么)跨度有黄色背景?

我不知道哪个规则适用于它,但更多的是:在其名称中扭曲(与我总是假设的相反)最后一条声明规则是否适用于第一条声明?

我的意思是“.red span”和“.yellow span”具有相同的复杂度。

  • 相同长度
  • 每个项目在给定位置具有相同的权重/重要性

它们在CSS选择自然顺序等同。

然后,在适用的问题上应该遵循的是哪条规则最贴近样式的项目。 在我的示例中,跨度应该用'.red span'(最接近的规则)而不是'.yellow span'(它也是正确的,但被'.red span''覆盖')。

这种行为是否存在“历史性”,“政治性”,“哲学性”或任何其他原因? 可能会强制我正在寻找的行为的一些DOCTYPES(可能是?)吗? 我可以向w3c提交请求(为什么不?)?怎么样 ? 任何信息,建议,不同的观点,都比欢迎!

感谢所有提前。


Edit note : 

我不想引用自己,但在注释艾默里克,我想出一个好办法来解释我的问话真的是什么。


总的来说,如果我有,让我们说7种颜色方案(每种彩虹颜色)。

还假设我是一个团队(比方说)10人的css制造商。

我希望他们(我的团队)能够嵌套颜色方案块。

  • 在一种情况下,红色的块会包含黄色和洋红色的块。
  • 在其他(有趣的)情况下,人们希望有7层嵌套(红色嵌套在嵌套为黄色的橙色嵌套在...)。

我现在没办法事先决定需要哪种用法。

当前CSS经历的行为会强迫我改造我的CSS 一次新嵌套需要弹出与令人讨厌过于臃肿的规则来结束。
在维护这方面是一种暴行:“(

+0

对不起!但是,在阅读你的文章的字眼之后,我确实无法抑制一个微笑:) – verisimilitude

+0

不确定你笑是因为你喜欢我写的方式还是因为取笑我的近似英语(我是法语)。无论如何,我很高兴我让你微笑;) – Ar3s

+2

一个原因可能是,如果浏览器只是应用最新的适用规则,那么它就不必跟踪每个元素的级联顺序。 –

回答

0

这里是一个article(不是真的,但最近明确),这也解释了(如果我没有误解你的问题)回答您寻找

有关。例如,如果您更换:

.red span, .red{ 
background-color: #F00 
} 

人:

.yellow .red span, .red{ 
    background-color: #F00 
} 

你的背景将是红

问候。

+0

是的,这将工作,我已经知道;)。但我并不是想通过某种方式来解决问题,或者了解如何实现CSS行为,而是以某种方式理解为什么以这种方式实现。额外的好处是可以发现其他的实现(也许doctype依赖),我可以强制我的页面允许我正在寻找的行为。无论如何,谢谢你的回复:) – Ar3s

+0

一般来说,我觉得如果我有7个颜色方案(每个彩虹颜色一个)。 我是一个团队(比方说)10人的CSS制造商。 我希望他们能够嵌套颜色方案块。 在一种情况下,红色的块会包含黄色和洋红色的块。 在另一个(有趣)的情况下,人们希望有7层嵌套(红色嵌套在嵌套为黄色的黄色嵌套在...)。 我现在没办法预先。当前的CSS经验行为会迫使我在每次出现新需求时重新调整自己的CSS,并最终导致过分臃肿的规则。 – Ar3s

+0

做到这一点的唯一方法是在我脑海中弹出的是根据这[小提琴](http://jsfiddle.net/q7xAn/11/)定义css'根类',并将它们嵌套在html – Aymeric

2

其被称为specificity的css。如果两个选择器与特定元素匹配并且它们具有相同的weight,则出现later的选择器将应用于该元素。

阅读this了解更多信息。

你选择.red span.yellow span都有0,1,1等应用最后一个规则(我提到会详细说明如何计算权重的链接)的重量。

还读了this来自W3的文章,这将更好地解释事情。

希望一切都有所了解:)

+0

谢谢,它已经全部对我来说是有意义的,我完全理解,自从它被宣布后,黄色接管了红色。但在对艾默默的帖子的评论中,我更好地描述了我的问题根本上是什么。 “当前CSS经验丰富的行为会迫使我在每次出现新需求时重新调整自己的CSS,并最终导致过分臃肿的规则。” 希望我现在有更多意义,但无论如何,感谢您的答复。 这篇文章将帮助我更准确地理解如何理解浏览器计算规则,如何“自然地”授予:) – Ar3s