html - css nth-child(1) 选择了第二个元素,为什么?

标签 html css css-selectors

我想要的是:理解 nth-child(n)。我的理解是,第n- child(1) 将选择每个第一个元素。所以苹果、水果、香蕉应选择显示红色。

实际显示的内容:但是番茄和芒果也被选择并显示为红色。

代码:

a {
    text-decoration: none;
    color: black;
}

:nth-child(1) {
    color: red;
}
<ul>
    <li>apple</li>
    <li>tomato</li>
    <li>
        <a href="#">fruit</a>
        <a href="#">juice</a>
    </li>
</ul>
<div>
    <span>
        <a href="#">banana</a>
        <em>mango</em>
    </span>
</div>

最佳答案

首先,:nth-child(1)还包括html:nth-child(1),这意味着所有文本都将是红色的。另请注意,ulbody 的第一个子级。 (运行代码片段时会添加 htmlbody 元素。)

几乎所有文本都是红色的原因有点复杂:

  • apple:红色,因为它是 ul 的第一个 li 元素中的文本
  • tomato:红色,因为它继承了ul的颜色,这是body中的第一个元素
  • fruit:红色,因为它是 li 元素中第一个 a 的文本(样式为 :nth-child(1)获胜)
  • juice:黑色,因为它是 a 元素的文本,该元素不是另一个元素的第一个子元素(使用 a 的样式)
  • banana:红色,因为它是 span 元素的第一个子元素的文本
  • mango:红色,因为 em 继承了其父级 (span) 的文本颜色,该父级 (span) 是 div 的第一个子级,因此应用 :nth-child(1) 样式

另请注意,div 中的任何文本都将为红色,因为 div 继承了 html 的颜色(这是第一个子元素) )。您可能需要为 html 指定明确的文本颜色,可以使用它来代替。

关于html - css nth-child(1) 选择了第二个元素,为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46066185/

相关文章:

css - :last-child works, :first-child 没有

php - 多词 href 链接将单词放在 HTML/CSS 中?

html - 哪些浏览器支持 `overflow-y` ?

html - 有没有办法改变 Bootstrap 导航栏的高度?

html - 使一个 div 自动水平地完全填充父 div

javascript - Jquery - 嵌套循环中的 $(this)

html - 3 个垂直背景图像显示为一个图像,内容在中心图像中。中心图像 "cuts off"与页脚图像不匹配

javascript - 在 html img 标签中显示来自 firebase 存储的图像

javascript - 使用灯丝组台锯插件时不显示标签

JQUERY,返回单击添加类的对象