2013-03-23 76 views
3

标签为的几个答案阻止使用!important有利于特异性。为什么?为什么使用`!重要`不鼓励?

+0

这是[回复评论](http://stackoverflow.com/questions/2754787/css-margin-0padding-0-override/2763068?noredirect=1#comment22091331_2763068)有人指示我的方式。 – 2013-03-23 01:32:45

+0

你的回答很好,但是这个问题似乎很短,而且不完整,因为不这样做是正义的IMO(因此积累了密切的投票)。 – BoltClock 2013-03-23 17:10:19

+0

@BoltClock - 你有如何改进它的建议?我没有多少考虑,因为我的目标只是回应评论。 – 2013-03-23 21:21:17

回答

3

有实际的数学可以用来预测,控制和反向工程CSS规则的影响。通过使用!important你打破了这一点。看看this JS fiddle例如,不使用!importanthttp://jsfiddle.net/hXPk7/

如果你使用Firebug或Chrome开发者工具来检查它说:“理查德”的称号元素,你应该看到这些规则,顺序如下:

/**************************/ 
/* /hXPk7/show/ (line 20) */ 
/**************************/ 
#myExample #title .name { 
    color: yellow; 
} 

/********************************************************/ 
/* /hXPk7/show/ (line 14) - Inherited fromdiv#myExample */ 
/********************************************************/ 
#myExample { 
    color: blue; 
} 

请注意,这不是它们在CSS样式表中出现的顺序,而是它们按照它们的特殊性的降序排列。优先列出的是先列出的,其他列表(其规则被更具体的规则覆盖)可能具有划掉的特性。这表明特异性使得跟踪(调试?)元素获取其CSS属性的位置变得很容易。

现在,比较this JS fiddle - 这实际上是一样的,但它现在使用!important一个新的规则:http://jsfiddle.net/hXPk7/1/

使用Firebug或Chrome开发工具检查相同的元素,你会看到类似这样的:

/**************************/ 
/* /hXPk7/1/show/ (line 20) */ 
/**************************/ 
#myExample #title .name { 
    color: yellow; 
} 

/**************************/ 
/* /hXPk7/1/show/ (line 26) */ 
/**************************/ 
span { 
    color: black !important; 
} 

/********************************************************/ 
/* /hXPk7/1/show/ (line 14) - Inherited fromdiv#myExample */ 
/********************************************************/ 
#myExample { 
    color: blue; 
} 

同样,规则是根据它们的特异性有序 - 但请注意,这一次,当它首先列出最具体的规则规定的yellow一个color,浏览器,而不是呈现文本黑色!这是因为!important声明打破了特异性的正常行为,优先考虑可追踪性。设想一个更现实的网站,可能有数百条规则,而控制color的网站并不明显可以找到或更改。

现在,也许这是开发人员工具的问题,但我认为它反映了!important采用通常易于预测的优先系统并使其更具挑战性的事实。也许有时候需要使用它,但它不应该成为编写CSS时的第一个工具。

+0

谢谢您的详细解释!这就是为什么我喜欢它:) – CodeMonkey 2013-03-23 01:42:53

+0

很好的解释..但它看起来像你只是解释写一个更聪明的方式,而不是使用'!important' ..而不是讨厌'!important'的原因......其实是你的问题。 :) – sohaiby 2015-10-03 12:43:41

相关问题