答案::only-child 伪类选择器用于选中其父元素中唯一的子元素,无论类型如何,等价于 :first-child:last-child;例如 p:only-child 会为唯一段落添加样式,而 img:only-child 可实现单图居中;与 :only-of-type 不同,后者仅要求同类型唯一,不需整体唯一。
在 css 中,并没有 only-child
这个选择器,你可能是想使用 :only-child 伪类选择器。这个选择器用于选中既是其父元素的唯一子元素,同时又是某个特定类型的元素。
:only-child 的作用
当一个元素是其父元素中唯一的子元素时,:only-child
就会生效。它等价于 :first-child:last-child
,也就是说,这个元素既是第一个子元素,也是最后一个子元素。
例如:你想给某个容器中唯一的段落添加特殊样式:
立即学习“前端免费学习笔记(深入)”;
<div> <p>我是唯一的子元素</p> </div> <div> <p>我不是唯一的</p> <p>还有我呢</p> </div>
第一段文字会变成红色加粗,第二组不会,因为有两个 p
元素,都不满足“唯一子元素”的条件。
常见使用场景
:only-child
特别适合用在动态内容中,比如根据子元素数量决定样式。例如:
- 只有一个图片时居中显示
- 只有一条消息时显示提示语
- 列表项只有一个时改变布局
img:only-child { display: block; margin: 0 auto; }
和 :only-of-type 的区别
如果你希望选中某一类型(如所有 p
)中的唯一一个,而父元素可能还有其他标签,应该用 :only-of-type
。
<div> <h2>标题</h2> <p>这是唯一的段落</p> <span>其他内容</span> </div>
p:only-of-type { color: green; }
上面这个 p
不是唯一子元素(还有 h2 和 span),所以 :only-child
不适用,但它是唯一的 p
标签,因此 :only-of-type
能选中它。
基本上就这些。记住::only-child
看的是“是不是唯一的子元素”,不区分类型;而 :only-of-type
看的是“是不是某类型中唯一的”。用对了才能精准控制样式。