CSS样式嵌套 - 正确的形式?

use*_*219 19 css nested

我在尝试找到有关如何在样式表中正确编写CSS规则的任何具体细节时遇到问题,其中类或ID嵌套在许多其他ID和样式中,例如

.mainbody #container #header #toprightsearch .searchbox {}
Run Code Online (Sandbox Code Playgroud)

所以这里我们searchbox在一个toprightsearchID,一个标题ID,一个容器ID和一个mainbody类中有一个类.

但是如果我省略了一些ID,它似乎可以正常工作.

列出这些的正确方法是什么?
如果我包括所有的父母,它是否更具体?如果我不包括所有浏览器,它会在不同的浏览器上出错吗?

关于这个主题的任何其他信息将不胜感激.

谢谢

Rya*_*nce 33

.searchbox {}
Run Code Online (Sandbox Code Playgroud)

使用.searchbox设置任何样式

.mainbody .searchbox{}
Run Code Online (Sandbox Code Playgroud)

任何来自任何.mainbody,直接子,孙子,四重孙子的.searchbox样式都无关紧要.

#toprightsearch > .searchbox {}
Run Code Online (Sandbox Code Playgroud)

仅限样式.searchbox是#toprightsearch的直接子项

#container * .searchbox {}
Run Code Online (Sandbox Code Playgroud)

样式.searchbox是#container的孙子或后来的.

这是一个关于这个主题的好文档:w3C选择器


cha*_*aos 7

如果包含更多父母,则会增加选择者的特异性.您不应该有跨浏览器问题而忽略父母.

没有正确数量的父母列出; 这取决于您对标记的要求.正如您所看到的那样,selector1 selector2意味着selector2在a内的任何级别selector1,您可以针对您需要的任何行为调整它.

在你的榜样,你应该列出.mainbody #container #header #toprightsearch .searchbox你什么意思是款式,只适用于.searchbox该是整个层次内上课.如果相反,您希望.searchboxes在条件下存在其他条件以获得相同的样式,则应该在层次结构中限制较少.这只是关于你想要完成的事情.

重新评论:ID产生更多的特异性,因此省略它们会更多地降低规则的特异性.