代码之家  ›  专栏  ›  技术社区  ›  vicatcu

CSS子体选择器[重复]

  •  -1
  • vicatcu  · 技术社区  · 5 年前

    我快疯了:

    HTML格式:

    <div><h1>Hello World!</h1></div>
    

    CSS格式:

    *:not(div) h1 { color: #900; }
    

    h1 元素的祖先不是 div 元素…?“因此,“你好,世界!”不应该是红色的,但它仍然是红色的。

    对于上述标记,添加子combinator是可行的:

    *:not(div) > h1 { color: #900; }
    

    但不影响 h1型 元素,如果它不是 部门

    <div><article><h1>Hello World!</h1></article></div>
    

    h1型 部门

    0 回复  |  直到 10 年前
        1
  •  87
  •   Community Mohan Dere    9 年前

    h1 元素的祖先不是 div 元素…?“

    是的。但是在一个典型的HTML文档中, 每一个 h1型 至少有两个祖先不是 body html

    这就是尝试使用 :not() :它不能可靠地工作,尤其是当 :not() .foo:not(div) . 只需将样式应用于所有应用程序,您就可以轻松得多 h1型 元素并用 div h1

    Selectors 4 , 能够使用它排除具有特定祖先的元素。由于选择器的工作方式,为了可靠地工作,必须对元素本身而不是祖先进行否定,因此语法看起来会有些不同:

    h1:not(div h1) { color: #900; }
    

    任何熟悉jQuery的人都会很快指出 this selector works in jQuery today . 这是其中之一 a number of disparities between Selector 3's :not() and jQuery's :not()

        2
  •  17
  •   BoltClock    14 年前

    这个 <html> <div> <body> 元素不是 <部门>

    所以条件“有一个祖先不是 <部门> “将适用于所有元素。

    > <article> 不是div,所以匹配 *:not(div) 我也是。