:last-child 有效, :first-child 无效

Posted

技术标签:

【中文标题】:last-child 有效, :first-child 无效【英文标题】::last-child works, :first-child doesn't [duplicate] 【发布时间】:2014-10-16 18:08:03 【问题描述】:

我有一个带有两个 <div class="sku"> 元素的 aside。我正在尝试使用 CSS 来操作 :first-child 但它不起作用。但是,当尝试访问 :last-child 时,它确实如此。

JSFiddle

HTML

<aside>
  <h1>Product Name</h1>
  <div class="sku">
    <h3>
      100 – Small
    </h3>
    <div class="dimension">
      <ul>
        <li>
          <span class="title">
            Product Dimensions
          </span>
          <span class="specs">
            23.75w
            x
            17.75h
            x
            28d
          </span>
        </li>
      </ul>
    </div>
  </div>
  <div class="sku">
    <h3>
      200 – Large
    </h3>
    <div class="dimension">
      <ul>
        <li>
          <span class="title">
            Product Dimensions
          </span>
          <span class="specs">
            29.75w
            x
            17.75h
            x
            28d
          </span>
        </li>
      </ul>
    </div>
  </div>
</aside>

CSS

.sku:first-child  
  display:none !important; /*doesn't hide the first child*/


.sku:last-child  
  display:none !important; /*does hide the first child*/

:first-child 为什么不选择第一个 div?

【问题讨论】:

请分享您的代码以及您想要完成的工作。如果没有更多信息,告诉我们某些事情不起作用是没有帮助的。 这是因为.sku 不是aside 元素的第一个 子元素。 CSS 伪类,例如 :first-child:last-childnth-child()、...查看父级的子树以匹配正确的子元素,而不是 element.class 的组合。 dev.sku 不是第一个孩子——h3 是。请改用:first-of-type 【参考方案1】:

您不能使用:first-child 伪类,因为.sku 不是第一个孩子。更好的选择是使用:first-of-type(第一个孩子)或:nth-of-type(可以接受数字或方程式)伪类:

.sku:nth-of-type(1) 
    display: none;

Updated Demo

【讨论】:

【参考方案2】:

:first-child 表示第一个孩子。在这种情况下是H1。所以这不起作用。您可以使用:

h1 + .sku  

但前提是这是您放置 html 的顺序。

【讨论】:

那么为什么 :last-child 工作呢? 因为 .sky 是父元素的最后一个子元素。您在该级别上有 3 个元素,h1 + .sku + .sku 其中 :last-child 是最后一个 sku。如果您在最后一个 sku 之后有一个 h2。它不起作用。 @greetification 由于没有一个 CSS 伪类尊重类名本身,我会选择这个即使在 IE7 中也支持的相邻兄弟选择器。

以上是关于:last-child 有效, :first-child 无效的主要内容,如果未能解决你的问题,请参考以下文章

CSS: :last-child 在列表项上

:last-child 将样式应用于所有元素

first-child和last-child选择器

css la pseudoclasse:last-child.css

动态:SASS中的last-child

使用 last-child 选择器减少 css