首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何防止CSS继承?

如何防止CSS继承?
EN

Stack Overflow用户
提问于 2009-06-05 21:08:19
回答 10查看 146K关注 0票数 104

我的侧边栏中有一个分层导航菜单,它使用嵌套列表(和标签)。我正在使用一个预先制作的主题,该主题已经具有列表项的样式,但我希望更改顶层项的样式,但不将其应用于子项。有没有一种简单的方法可以将样式应用到顶级列表项标记中,而不让这些样式级联到它的子列表项?我知道我可以显式地将覆盖样式添加到子项中,但如果有一种简单的方法说“将这些样式应用于这个类,并且不将它们层叠到任何子元素”,我真的希望避免复制所有的样式代码。下面是我使用的html:

代码语言:javascript
复制
<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上的样式现在特定于某些类?

EN

回答 10

Stack Overflow用户

回答已采纳

发布于 2009-06-05 21:23:37

到目前为止,还没有父选择器(或者Shaun Inman称之为qualified selectors),所以您必须将样式应用于子列表项,以覆盖父列表项上的样式。

级联在某种程度上是级联样式表的要点,因此得名。

票数 38
EN

Stack Overflow用户

发布于 2009-06-05 21:22:57

您可以使用子选择器

所以使用

代码语言:javascript
复制
#parent > child

将仅使第一级子对象应用样式。不幸的是,IE6不支持子选择器。

否则,您可以使用

代码语言:javascript
复制
#parent child child

若要将另一个特定样式设置为低于多个级别的子项,请执行以下操作。

票数 75
EN

Stack Overflow用户

发布于 2013-03-13 16:22:27

CSS3 inheritance module中有一个名为all的属性。它是这样工作的:

代码语言:javascript
复制
#sidebar ul li {
  all: initial;
}

从2016-12年度开始,all browsers but IE/Edge and Opera Mini支持此属性。

票数 49
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/958170

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档