【问题标题】:CSS sibling selectors (select all siblings) [duplicate]CSS兄弟选择器(选择所有兄弟)[重复]
【发布时间】:2012-08-02 13:11:19
【问题描述】:

通常,我擅长 CSS,但我似乎无法弄清楚这一点。如果我的结构是

<div>
    <h2 class="open">1</h2>
    <h2>2</h2>
    <h2>3</h2>
    <h2>4</h2>
    <h2>5</h2>
</div>

如何使用 .open 类和 CSS 来定位所有兄弟 h2?我的主要问题是兄弟选择器 (.open + h2) 只会针对紧跟在 .open 之后的 h2。

【问题讨论】:

    标签: css css-selectors


    【解决方案1】:

    您可以使用~ 而不是+ 选择以下所有同级:

    .open ~ h2
    

    如果您需要选择所有不是.openh2 元素,无论它们在.open 之前还是之后,都没有兄弟组合符。您需要改用:not()

    h2:not(.open)
    

    如果您需要将选择限制为div 父母,则可以选择使用子组合器:

    div > h2:not(.open)
    

    【讨论】:

    【解决方案2】:

    我知道这不是您问题的直接答案,但我发现它是一种更有效的选择兄弟姐妹的方法,只需选择父级的所有子级,并为 open 指定一个唯一的类就像你在那里一样。所以代码是:

    div h2 { } // apply the style for all "siblings" but really children
    div h2.open { } // apply the style or cancel styles from the siblings
    

    这对我很有用,它不需要新的 CSS 规则或任何特殊的东西。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-12-13
      • 1970-01-01
      • 1970-01-01
      • 2016-04-02
      • 2014-02-09
      • 2016-07-28
      • 2015-11-25
      • 2019-08-10
      相关资源
      最近更新 更多