【问题标题】:CSS :not selector behavior [duplicate]CSS:不是选择器行为[重复]
【发布时间】:2016-06-30 00:22:40
【问题描述】:

使用 CSS,我试图定位 #include 元素内的所有 ul 元素,#exclude 元素内的元素除外。这是标记:

<div id="include">
  <ul><li>Include List</li></ul>
  <div id="exclude">
    <ul><li>Exclude List</li></ul>
  </div>
</div>

我想我可以像这样使用:not CSS 选择器来做到这一点:

#include :not(#exclude) ul {
  color: blue !important;
}

我看到的结果是ul 都没有得到蓝色。显然我误解了这个:not 选择器是如何工作的。我正在尝试做的事情可能吗?这是一个小提琴:

https://jsfiddle.net/flyingL123/gmpLgx4y/

【问题讨论】:

    标签: css css-selectors


    【解决方案1】:

    您需要使用&gt; 运算符。这将获取前面元素的直接子元素。这将得到ul 立即从#include 下降。更新:

    JSFiddle

    更新代码:

    #include > ul {
        color: blue !important;
    }
    

    您将能够通过继承来隐式设置样式。他们不排除祖先,因为他们没有涓涓细流。您需要为其他元素添加新规则,如下所示:

    #include ul {
        color: blue;
    }
    
    #exclude ul {
        color: black;
    }
    

    小提琴:Here

    【讨论】:

    • 这只是一些示例代码。在我的真实项目中,ul 不是直接的孩子。我想定位#include 内所有不在#exclude 内的ul,无论其深度如何。这不可能吗?
    • 编辑@flyingL123
    • 是的,我现在从:not 的文档中看到,这可能不是我想要的方式。 :not 不会传给祖先。
    • 它没有。这就是为什么它不用于排除祖先的原因。 @flyingL123
    猜你喜欢
    • 1970-01-01
    • 2016-01-13
    • 2017-12-23
    • 1970-01-01
    • 2012-10-26
    • 2013-06-04
    • 2010-10-18
    • 2012-02-06
    • 1970-01-01
    相关资源
    最近更新 更多