空单元格边框不显示需用 (不间断空格)而非空字符串或普通空格;表格缩进应外包div设margin;td内留白用padding而非margin;整行塌陷优先用min-height或empty-cells:show。

空单元格边框不显示?用 而不是空字符串
表格里 <td></td> 或 <td> </td>(普通空格)在部分浏览器(尤其是旧版 IE、Outlook 邮件客户端)中会塌陷,边框/背景消失——这不是 bug,是渲染规范对“无可渲染内容”的默认处理。
真正起效的是 (不间断空格),它被浏览器视为有效字符,强制保留盒模型:
- 单个
就够,无需叠加;堆多个只会增加 HTML 体积 - 别写成
&nbps;(拼错)、 (缺分号)或_nbsp(下划线),这些都会原样输出为文本 - 动态插入时,用
cell.textContent = value || '\u00A0'最安全;若用innerHTML,确保后端没双重转义
表格整体左右缩进失效?包一层 <div> 再设 margin
<table style="margin: 0 40px;"> 在 Outlook 等邮件客户端常被忽略,导致缩进丢失。表格元素本身不响应 margin 的兼容性极差。
正确做法是用语义容器包裹:
文章转信息图。将文章/笔记转化为手机可读的 HTML 信息图,自动匹配视觉风格。触发场景:文章转图、笔记转图、信息图、转小红书图、做张图、可视化这篇文章、文生图。
立即学习“前端免费学习笔记(深入)”;
<div style="margin: 0 40px;"><table>...</table></div>- 如需居中且限制最大宽度:
<div style="margin: 0 auto; max-width: 800px;"><table width="100%">...</table></div> - 避免用
align="center"或cellspacing模拟缩进——它们控制的是单元格间距,不是外层留白
单元格内部左右留白用 padding,不是 margin
<td> 不吃 margin,写了也无效。左右空白必须靠 padding 实现:
- 标准写法:
td { padding: 8px 16px; }(上下 8px,左右 16px) - 如果用了
border-collapse: collapse,某些浏览器可能压缩padding视觉表现,此时可改用border-spacing替代 - 邮件模板中更稳妥:
<td style="padding: 10px 20px; font-size: 1px; line-height: 1px;"> </td>(防 Outlook 塌陷)
整行/整表高度塌陷?别依赖 撑高
用 强行撑高单个 <td> 是权宜之计,但无法解决整行高度归零的问题。这时候该换思路:
- 给
<tr>设min-height(注意:IE11 不支持,需 fallback) - 给
<table>设empty-cells: show—— 但它只在border-collapse: separate下生效,且不解决高度问题 - 最可靠的是统一用 CSS 控制:
td, th { min-height: 24px; },配合保边框
真正需要 的地方其实很少:只是兜底表格结构不塌陷。一旦开始靠它对齐、撑宽、模拟 padding,说明该用 CSS 重写了。


















