:first-of-type和:last-of-type基于标签类型选中父容器内同类元素的首尾项,结合使用可精准控制样式。例如去除文章首段上边距与末段下边距:article p:first-of-type { margin-top: 0; } 和 article p:last-of-type { margin-bottom: 0; }。组合书写如p:first-of-type, p:last-of-type可统一设置首尾段落背景色或内边距,避免添加冗余class,适用于动态内容。通过:not()排除首尾元素,使中间段落应用特定样式:p:not(:first-of-type):not(:last-of-type) { margin: 20px 0; border-left: 4px solid #ddd; },适合实现装饰线效果。为防止单一元素被误匹配,可结合:only-of-type:p:first-of-type:not(:only-of-type)确保仅多段落时去除外边距。掌握“类型”指标签名而非class,是正确使用的关键,提升CSS语义性与适应性。

在CSS中,:last-of-type 和 :first-of-type 是非常实用的伪类选择器,它们可以根据元素在父容器中的位置精准地选中第一个或最后一个同类型子元素。将这两个选择器结合使用,可以实现更灵活、语义更强的样式控制,尤其是在处理动态内容或不确定数量的子元素时尤为有效。
这两个伪类基于元素的“类型”(即标签名)进行匹配:
例如,在一段包含多个 p 和 h2 的文章中:
article p:first-of-type { margin-top: 0; }可用来去除文章首个段落的上边距;而:
立即学习“前端免费学习笔记(深入)”;
article p:last-of-type { margin-bottom: 0; }则能统一结尾段落的底部间距。
当需要对某一类元素的开头和结尾统一设置样式时,可以将两者结合使用。比如为列表中第一个和最后一个段落添加特殊边距或背景:
p:first-of-type,
p:last-of-type {
background-color: #f5f5f5;
padding: 10px;
}这种写法避免了额外添加 class,特别适合 CMS 输出的富文本内容,结构不可控但样式需保持一致的情况。
有时我们想对中间的同类元素应用特定样式,而跳过第一个和最后一个。这时可以用 :not() 配合两者实现:
p:not(:first-of-type):not(:last-of-type) {
margin: 20px 0;
border-left: 4px solid #ddd;
}上述规则只会作用于既不是第一个也不是最后一个的段落,适合创建“缩进引用”或“侧边装饰线”等视觉效果。
在复杂布局中,可结合 :only-of-type 防止误选。例如,如果只有一个段落,就不应同时应用首尾样式:
p:first-of-type:not(:only-of-type) {
margin-top: 0;
}
p:last-of-type:not(:only-of-type) {
margin-bottom: 0;
}这样确保只有在多个段落存在时才去除首尾外边距,单个段落则保留默认样式逻辑。
基本上就这些。合理使用 :first-of-type 和 :last-of-type 的组合,能让你的CSS更简洁、更具适应性,尤其在处理用户生成内容时优势明显。关键是理解“类型”的含义——它指的是元素标签,而不是 class 或位置。掌握这一点,就能避免多数选择器失效的问题。
以上就是css :last-of-type与:first-of-type结合使用技巧的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号