必须设置border-collapse: collapse且td/th显式定义border-style,否则border-left等单边属性不生效;常见失效原因包括table未设collapse、border简写覆盖、border-left-width为0或父级更高优先级样式压制。

直接给 <td> 或 <code><th> 加 <code>border 样式就能生效,但必须处理好 border-collapse 和层叠顺序,否则边框会消失、变双线或错位。
为什么单个单元格的 border-left 不显示?
常见现象是写了 border-left: 2px solid red 却没反应。根本原因不是语法错,而是被默认行为或更高优先级样式压制:
<table> 没设 <code>border-collapse: collapse,导致border-left在separate模式下被相邻单元格边框“挤”出视区<td> 上用了 <code>border: 1px solid #000这类简写,它会覆盖掉单独写的border-left-
border-left-width为0时,border-left-style(如dashed)自动失效——宽度必须显式大于 0 - 父级
<tr> 或框架(如 Bootstrap)设置了全局 <code>border,CSS 优先级更高,直接盖掉你的设置怎么只让某列/某行的单元格有特殊边框?
手动加 class 太累,用 CSS 选择器更可靠,但要注意 DOM 结构和
colspan干扰:
anything-to-html下载将调研报告、方案对比、数据分析、需求梳理、会议纪要、设计说明、代码评审、学习笔记等任务产物输出为可在浏览器直接打开的单文件 HTML,替代 Markdown 作为最终交付物。Markdown 在信息密度、视觉清晰度和可分享性上已跟不上 AI 产物的丰富度,HTML 能同时承载排版、表格、SVG 等。
- 第一列所有单元格:
td:first-child, th:first-child { border-left: 3px solid #e74c3c; } - 最后一行所有单元格:
tr:last-child td, tr:last-child th { border-bottom: 2px double #2c3e50; } - 第 3 列(注意:按 HTML 顺序数,不是视觉列):
td:nth-child(3), th:nth-child(3) { border-right: 1px dashed #3498db; } - 如果用了
<colgroup></colgroup>,可给<col>设border-left,但前提是table { border-collapse: collapse; }已启用
用 border-collapse: separate 还是 collapse?
选哪个取决于你要什么效果,不能只看“合并”这个词:
- 想让某个单元格单独加粗右边框,且不干扰隔壁单元格——用
border-collapse: separate,再配border-spacing: 0避免空隙 - 想统一网格、消除双线、让
border-left真正只画在左边边缘——必须用border-collapse: collapse,且<td> 的其他三边要明确设为 <code>none,比如:border: none; border-left: 2px solid #666; -
collapse下,border-style: hidden是个冷技巧:它能“吃掉”某条边,避免和邻单元格冲突,但必须搭配非零border-width
真正卡住人的不是写哪条 CSS,而是搞清
border-collapse模式、选择器匹配范围、以及哪一层样式正在静默覆盖你写的那条border——尤其当表格嵌在框架里或用了colspan时,:nth-child()很容易数偏。 - 第一列所有单元格:
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!










