1

我最近在阅读和试验 CSS,但是,在我所做的几乎每一个实验中,我都一遍又一遍地遇到同样的问题。

问题简单如下:我设置属性为一般规则。然后我尝试为单个项目或有时为一个全新的类修改这些属性。出于某种原因,旧的(初始规则)仍然存在,新的类没有影响任何东西。

我知道在这些情况下使用 !important 会有所帮助,但我仍然难以获得整体逻辑。有时它可以在没有 !important 的情况下工作,有时它只是.. 没有。

我错过了什么?

这是一个示例,其中“nomargins”类不工作,除非它被应用为!important。 http://cssdeck.com/labs/9xevau8p

4

3 回答 3

6

你应该研究一下特异性。例子

您的问题是#main li.nomargins.

如果你愿意,你可以为.nomarginslike this添加特异性#main .nomargins

于 2013-02-07T14:51:30.767 回答
1

如果您像这样嵌套元素:#somediv ul li a此处指定的属性将具有优先级。我对此有很多问题,但是在您知道之后,解决方案很容易找到。另外这里是可以帮助您理解css渲染的文章

于 2013-02-07T14:52:07.727 回答
1

这是一个漫长而复杂的故事。基本上,浏览器会检查: - 样式来自哪里(作者样式表、用户样式表、内联声明等) - 相关规则的具体程度(影响 id 的规则将先于影响类的规则) - 规则的顺序(新规则先于旧规则) - 以及其他一些东西。就像已经说过的那样,大多数时候问题是特殊性的。检查此链接以获得更详细(和长)的答案: http ://www.vanseodesign.com/css/css-specificity-inheritance-cascaade/

于 2013-02-07T14:53:18.463 回答