我想让它保持简单.其思想是通过嵌套 struct 中的某个类 Select 最后一个直接子对象.为什么它适用于<nav>个标签而不是<div>个标签?

With <div> tag:

.super > .sub:last-of-type {
  background-color: turquoise;
}
<div class="super">
  <div class="sub">1</div>
  <div class="sub">2</div>
  <div class="super">
    <div class="sub">_1</div>
    <div class="sub">_2</div>
    <div class="super">
      <div class="sub">__1</div>
      <div class="sub">__2</div>
    </div>
  </div>
</div>

With <nav> tag:

.super > .sub:last-of-type {
  background-color: turquoise;
}
<nav class="super">
  <div class="sub">1</div>
  <div class="sub">2</div>
  <nav class="super">
    <div class="sub">_1</div>
    <div class="sub">_2</div>
    <nav class="super">
      <div class="sub">__1</div>
      <div class="sub">__2</div>
    </nav>
  </nav>
</nav>

所以我在这里有两个问题.

  1. 为什么?
  2. 我能用<div>个标签实现同样的<nav>个行为吗?

推荐答案

我认为你的困惑在于,:last-of-type可以被认为是"标签的最后",而不是" Select 者的最后".

所以,当你做.sub:last-of-type并且你使用所有的div时,你实际上是在说"最后一个也有类.sub的div".让我们再看一遍您的代码:

<div class="super">
  <div class="sub">1</div>
  <div class="sub">2</div> <!-- this is not the last DIV -->
  <div class="super">
    <div class="sub">_1</div>
    <div class="sub">_2</div> <!-- this is not the last DIV -->
    <div class="super">
      <div class="sub">__1</div>
      <div class="sub">__2</div> <!-- this IS the last DIV -->
    </div>
  </div>
</div>

在上面的例子中,您有两个div,它们不是DIV类型的最后一个,即使它们是类为.sub的最后一个类型--这不是:last-of-type Select 器的目标.这很让人困惑.

当您使用NAV时,这.sub个元素确实是"DIV"类型的最后一个元素:

<nav class="super">
  <div class="sub">1</div>
  <div class="sub">2</div> <!-- this is the last of type DIV -->
  <nav class="super">
    <div class="sub">_1</div>
    <div class="sub">_2</div> <!-- this is the last of type DIV -->
    <nav class="super">
      <div class="sub">__1</div>
      <div class="sub">__2</div> <!-- this is the last of type DIV -->
    </nav>
  </nav>
</nav>

UPDATE (from comments):我的建议是对.super个元素使用除DIV之外的任何标记,就像上面的nav个标记所做的那样.你甚至可以创建自己的custom elements个.

Op最终找到了一个仅支持css的解决方案,我在他们的要求下发布了这个解决方案,尽管我个人发现它很难阅读和理解.尽管如此,这仍然是一个聪明的解决方案:

.super > .sub:has(+ .super), 
.super > .sub:last-child { 
  background-color: turquoise; 
}

Html相关问答推荐

XPATH text()函数遇到困难

HTML表行悬停仅适用于偶数行

将2个Flex列合并为1个交替子列

在网页上的 Select 器中显示选项时出现问题:未在GO模板中传递循环{{range}}的数据

我无法动态嵌入Instagram帖子,因为无法分配Instagram固定链接

如何在R rmarkdown中创建循环中的分页表?

在R中从网页上的特定iframe中提取图形数据

如何在小屏幕中制作水平滚动div

为什么带有截断的 contentedible div 在受约束时会在 Chrome 中添加空格

是否有语义 HTML 可以澄清含义?

HTML 重定向到当前服务器

在span中添加

如何从 div 内的属性中提取 href 和文本

如何调整网格中单元格的高度?

标签背景 colored颜色 的 html 和 css 技巧说明

两部分问题 - 是什么导致了这个空白?

如何将 2 种不同的 colored颜色 应用于 css 中的复选框?

使用 rgba() 的 css 中的边框不透明度不起作用

我可以在标签元素中使用标题元素吗?

调整大小时 CSS 溢出