css - 最后类型选择器有效,而第一个类型选择器无效?

标签 css css-selectors

我有以下一段SCSS代码:

li {
  &.menu-item-type-custom {
    margin-bottom: 10px;

    a {
      //
    }

    &:last-of-type {
      margin-bottom: 40px;
    }

    &:first-of-type {
      margin-top: 40px;
    }
  }
}

在此代码中,我尝试使用一系列动态放置的 li 标记的第一个和最后一个元素来在此部分的顶部和底部创建空白。

首先,我尝试使用 last-of-type 选择器按下底部,如下所示:

&:last-of-type {
  margin-bottom: 40px;
}

这就像一个魅力。现在我想做同样的事情,但是从顶部开始,并使用以下代码以相反的方向:

&:first-of-type {
  margin-top: 40px;
}

但是,这行不通。它没有在检查元素中被拾取,并且该元素保留在其位置。我尝试过各种其他方法,例如使用 &:nth-of-type(1),但这也不起作用。出于调试目的,我尝试在 &:first-of-type 选择器中设置不同的属性,但这些都不起作用。

这是我的错吗,或者可能是一些看不见的问题,是否有解决该问题的方法?

谢谢。

最佳答案

重要的是要知道 :first-of-type:last-of-type 等并不真正适用于类,而是适用于它们所附加的元素类型,在本例中为li

一开始可能会有点困惑,有时如果您遵循良好的标记实践,您甚至可能不会注意到差异,因为元素被正确隔离,但它并不像您期望的那样工作 :first-of-class(不存在)。

有一些方法可以解决这个问题,但没有一个是完美的。我最喜欢的答案是this one 。写得很好,解释也很好。

关于css - 最后类型选择器有效,而第一个类型选择器无效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46234241/

相关文章:

HTML CSS - 输入 radio 居中和垂直对齐

javascript - Bootstrap Modal 在 Firefox 中关闭视频窗口后继续播放音频

css - 选择第 n 个元素,除非元素位于特定位置并且是 CSS 的最后一个子元素

css - 多个 nth-last-child 和/或 last-child 不工作

覆盖整个页面的CSS背景渐变

jquery - zClip - 如何通过单击按钮添加、触发然后删除 zClip?

html - 调整网站页脚

javascript - CSS HTML 最后一个 child 不工作?

css - 选择器中的 SCSS 排除

jquery - 使用 CSS 定位文本但不定位同级元素