使用 :last-child 伪类可去除列表最后一项边框,如 ul li:last-child { border-bottom: none; },但需确保 li 是父元素最后一个同级子元素,否则可用 :nth-last-child(1) 或 :not(:first-child) 替代。

直接用 :last-child 伪类给列表最后一项设置 border: none 即可去除边框,前提是边框原本是通过父元素或每个 li 统一加的。
基础写法(适用于 ul/li 或 ol/li)
假设你用的是上下边框或底部边框:
ul li {
border-bottom: 1px solid #ccc;
}
ul li:last-child {
border-bottom: none;
}
注意父容器结构是否匹配
:last-child 匹配的是其父元素中**最后一个同级子元素**。常见踩坑点:
- 如果
ul里除了li还有其他元素(比如注释、空格文本节点不影响,但或>标签会),li:last-child可能不生效- 如果列表项是用
flex或grid布局,且设置了flex-wrap,仍以 DOM 顺序为准,不是视觉最后一行- 想按“最后显示的一项”去边框?
:last-child不管换行,只看 HTML 结构顺序更稳妥的替代方案
如果结构复杂,或需要兼容老浏览器,可用
:nth-last-child(1),效果和:last-child一样,但语义更明确:立即学习“前端免费学习笔记(深入)”;
ul li:nth-last-child(1) { border-bottom: none; }或者用
:not(:first-child)反向思路——给除第一项外的所有项加顶边框,自然最后一项没多余边框:ul li:not(:first-child) { border-top: 1px solid #ccc; }如果是左右边框,去掉最后一项的右边界
例如横向菜单:
nav li { border-right: 1px solid #999; } nav li:last-child { border-right: none; }只要确保选择器命中目标li,:last-child就是最简洁可靠的方式。 - 如果列表项是用









