我的侧边栏中有一个分层导航菜单,它使用嵌套列表(和标签)。我正在使用一个预先制作的主题,该主题已经具有列表项的样式,但我希望更改顶层项的样式,但不将其应用于子项。有没有一种简单的方法可以将样式应用到顶级列表项标记中,而不让这些样式级联到它的子列表项?我知道我可以显式地将覆盖样式添加到子项中,但如果有一种简单的方法说“将这些样式应用于这个类,并且不将它们层叠到任何子元素”,我真的希望避免复制所有的样式代码。下面是我使用的html:
<ul id="sidebar">
<li class="top-level-nav">
<span>HEADING 1</span>
<ul>
<li>sub-heading A</li>
<li>sub-heading B</li>
</ul>
</li>
<li class="top-level-nav">
<span>HEADING 2</span>
<ul>
<li>sub-heading A</li>
<li>sub-heading B</li>
</ul>
</li>
</ul>
所以CSS已经有了用于#sidebar ul
和#sidebar ul li
的样式,但是我想向#sidebar .top-level-nav
添加其他样式,这些样式不会级联到它的子级联。有没有什么方法可以简单地做到这一点,或者我需要重新排列所有的样式,以便#sidebar ul
上的样式现在特定于某些类?
发布于 2009-06-05 21:23:37
到目前为止,还没有父选择器(或者Shaun Inman称之为qualified selectors),所以您必须将样式应用于子列表项,以覆盖父列表项上的样式。
级联在某种程度上是级联样式表的要点,因此得名。
发布于 2009-06-05 21:22:57
您可以使用子选择器
所以使用
#parent > child
将仅使第一级子对象应用样式。不幸的是,IE6不支持子选择器。
否则,您可以使用
#parent child child
若要将另一个特定样式设置为低于多个级别的子项,请执行以下操作。
发布于 2013-03-13 16:22:27
CSS3 inheritance module中有一个名为all
的属性。它是这样工作的:
#sidebar ul li {
all: initial;
}
从2016-12年度开始,all browsers but IE/Edge and Opera Mini支持此属性。
https://stackoverflow.com/questions/958170
复制相似问题