表格单元格左右留白必须用padding而非margin,外层缩进需用父div的margin;邮件客户端中需用 防塌陷,border-collapse:collapse可能压缩padding,建议改用border-spacing。

表格内容左右留白用 padding,不是 margin
表格单元格(<td> 或 <code><th>)内部的左右空白,必须靠 <code>padding-left 和 padding-right 实现。给 <td> 外层加 <code>margin 是无效的——表格单元格不响应 margin,浏览器会忽略它。
- 正确写法:
td { padding: 8px 16px; }(上下 8px,左右 16px) - 若只调左右:
td { padding-left: 20px; padding-right: 20px; } - 避免写成:
td { margin: 0 20px; }—— 这个 margin 不起作用 - 注意:
padding会扩大单元格实际宽度,如果表格设了固定宽(如width="800"),可能触发横向滚动或内容换行
整张表格左右留白用父容器 margin,不是表格自身
想让整个表格在页面中左右缩进(比如离左右边距各 40px),不能给 <table> 设 <code>margin 然后指望它居中或缩进——老版本 IE 或 Outlook 邮件客户端可能不认;稳妥做法是把表格包进一个 <div>,再对这个 <code><div> 设 <code>margin。
- 推荐结构:
<div style="margin: 0 40px;"><table>...</table></div> - 若需水平居中且两边等宽留白:
<div style="margin: 0 auto; max-width: 800px;"><table width="100%">...</table></div> - 直接写
<table style="margin: 0 40px;">在部分邮件客户端(如 Outlook 2019)里会被丢弃,不可靠 - 别用
align="center"或cellspacing/cellpadding模拟留白——语义错、控制弱、易冲突
旧式邮件模板中兼容性留白必须塞内容 + padding
Outlook(尤其是 Windows 版)会折叠纯空单元格,哪怕写了 height 或 padding,只要里面没“东西”,就可能塌成一条线。这时候得妥协:加不可见字符 + padding。
- 安全写法:
<td style="padding: 10px 20px;"> </td>(是不可见空格) - 更稳一点:
<td style="padding: 10px 20px; font-size: 1px; line-height: 1px;"> </td>(防字体撑高) - 绝对别写:
<td style="padding: 10px 20px;"></td>—— Outlook 可能当空节点处理,高度归零 - 这种写法只应在邮件 HTML 或遗留系统中出现;现代网页开发请跳过此节
border-collapse: collapse 会影响左右留白视觉表现
默认表格边框是分离的(border-collapse: separate),此时 cellpadding 和 padding 表现正常;但一旦用了 collapse,部分浏览器(如 Safari)会对 padding 渲染偏紧,尤其左右。
立即学习“前端免费学习笔记(深入)”;
- 验证方式:检查 DevTools 中
td的 computedpadding是否被截断或压缩 - 临时修复:
td { padding-left: calc(16px + 1px); padding-right: calc(16px + 1px); }(加 1px 抵消 collapse 偏差) - 长期建议:放弃
border-collapse: collapse改用border: 1px solid #ddd+border-spacing: 0,更可控 - 注意:
border-spacing只在separate模式下生效,和collapse互斥



















