【问题标题】:How to get the first child that is a specific element?如何获得作为特定元素的第一个孩子?
【发布时间】:2011-12-08 19:15:39
【问题描述】:

这个问题看起来很简单,但是我无法解决这个问题。

我有以下简单的标记。

<div id="left_pane">
<ul>
<div id="indicator"></div>
<li>Something</li>
<li>Something else</li>
</ul>
</div>

如何从列表中选择li 元素的第一项? (即不是 div)。

我尝试了很多不同的方法......就像这样

#left_pane ul:first-child li {
    /* style */
}

#left_pane li:first-child {
    /* style */
}

但我似乎什么都做不了。

【问题讨论】:

  • 您知道您的 HTML 无效吗? ul 元素不能包含除li 元素以外的任何内容。

标签: html css css-selectors


【解决方案1】:

要获取其类型的第一个元素而不考虑其他不同类型的元素,您通常会使用:first-of-type CSS3 伪类。

但是在这里,首先将div 作为ul 的子代是无效的HTML,因此您应该将内部div 移出。然后根据您的第二条规则使用:first-child 就足够了,因为ul 只能将li 元素作为子元素:

#left_pane li:first-child {
    /* style */
}

【讨论】:

  • 我想浏览器正在纠正这个问题,并且已经移除了 div 元素,这会让事情变得更加混乱。
  • @Felix Kling:Firefox 似乎很乐意将div 保留在ul 中,这可以解释为什么:first-child 不适用于OP 的标记。在 Firebug 中运行 $('&lt;ul&gt;&lt;div&gt;&lt;/div&gt;&lt;/ul&gt;').find('div') 并查看结果。
  • @BoltClock 我正在尝试制作一个浮动到列表项右侧的小指示器 - 如果我将其移出 ul ,则 div 不会与列表正确对齐...
  • 已修复 - 我认为它可能不是有效的标记,但它似乎是唯一能让我的指标正确对齐的东西 - 我现在用负边距更正了它
猜你喜欢
  • 2011-05-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-26
  • 2013-12-01
  • 2022-01-15
  • 2020-09-09
相关资源
最近更新 更多