必须给table设置border-collapse: collapse,否则td/th的border-left等单边属性无法生效;其前提包括table自身声明该属性、td/th显式定义边框、避免border简写覆盖及选择器精准匹配。

HTML表格本身不直接支持只显示左边框这种精细控制,必须靠CSS的border-left等属性配合选择器来实现。
为什么border简写在表格里容易出双线?
给<table>加border: 1px solid #000,再给<td>也加同样边框,就会出现相邻单元格之间两条边框叠加。这不是bug,是默认border-collapse: separate的行为。
- 解决办法是强制合并:给
<table>加border-collapse: collapse - 此时
<td>和<th>的border-left才真正只作用于左侧边缘 - 如果只想保留左边框,其他三边设为
none,比如:border: none; border-left: 2px solid #333;
border-left在<td>上生效的前提条件
单独给<td>写border-left: 3px dashed red,但页面没反应?大概率卡在这几个点:
-
<table>没设border-collapse: collapse,导致边框被“撑开”或被覆盖 -
<td>的border-left-width为0时,border-left-style(比如solid)会失效 - 父级
<tr>或<table>设置了更高优先级的border简写,把border-left覆盖了 - 用了
border-left-style: hidden但没配宽度——hidden需要明确border-left-width才起作用
怎么只让第一列有左边框?
用CSS选择器精准定位比逐个加class更可靠:
立即学习“前端免费学习笔记(深入)”;
- 第一列
<td>和<th>:用td:first-child, th:first-child { border-left: 2px solid #666; } - 如果表格有
<colgroup>,也可以给<col>设border-left,但注意它只对border-collapse: collapse有效 - 避免用
:nth-child(1)去选行内第一个单元格——当某行有colspan时会错位 - 想让整列都有统一左边框,推荐给
<col>加样式,再补一句table { border-collapse: collapse; }
真正麻烦的不是写哪条规则,而是搞清border-collapse、层叠顺序和选择器匹配范围这三者怎么咬合。漏掉任意一个,border-left就可能静默失效。



















