char属性仅在<col>和<colgroup>中有效,必须配合align="char"使用,单独设置无效;主流浏览器实际已不支持该属性,推荐改用CSS text-align: "."(仅Firefox支持)或右对齐+等宽字体+补零方案。

char 属性在 <col> 和 <colgroup> 中才有效
直接给 <td> 或 <th> 加 char 属性是无效的 —— 浏览器会忽略它。这个属性只被 <col> 和 <colgroup> 支持,且必须配合 align="char" 才能起作用。
常见错误是写成:<td char=".">123.45</td>,这完全不生效。正确路径是:先用 <col> 定义列行为,再让对应单元格内容按指定字符对齐。
-
char必须搭配align="char"使用,单独设char没用 - 只支持单字符(如
"."、":"、"-"),不能是字符串或空格(空格需用实体) - 对齐基准是字符在单元格内的**第一个出现位置**,不是居中或右对齐意义上的“对齐点”
实际写法:用 <col> 绑定列 + align="char" + char
下面是一个让金额列小数点对齐的典型例子:
<table>
<colgroup>
<col>
<col align="char" char=".">
</colgroup>
<tr><th>项目</th><th>金额</th></tr>
<tr><td>A</td><td>123.45</td></tr>
<tr><td>B</td><td>6789.00</td></tr>
<tr><td>C</td><td>5.678</td></tr>
</table>
注意三点:
立即学习“前端免费学习笔记(深入)”;
-
<col>必须放在<thead>或<tbody>之前,且顺序要和列一一对应 - 如果表格有
<thead>,<colgroup>应紧贴<table>开始,不能塞进<thead>里 - 所有该列的
<td>都会自动按第一个"."对齐 —— 不需要额外样式或 JS
兼容性和现实限制
这个特性在 Chrome、Firefox、Safari(含 iOS)中基本可用,但存在明显短板:
- IE 完全不支持
char属性(包括 Edge Legacy) - 如果某单元格不含指定
char字符(比如"-"</td>但设了char="."),该单元格会退回到默认左对齐,不会报错也不会警告 - 无法控制对齐偏移量(比如“小数点左侧留 2px 空隙”),纯靠浏览器内置逻辑,不可微调
- 响应式布局下,列宽变化可能导致视觉错位 —— 因为对齐依赖字符位置,不是等宽字体渲染
替代方案:为什么多数人改用 CSS text-align: "."
现代写法更常用 CSS 的 text-align: "."(带引号),它语法更直观,且可直接作用于 <td>:
td.amount {
text-align: ".";
}
但要注意:
- 必须配合
font-family设为等宽字体(如monospace),否则小数点对齐效果会漂移 - 部分旧版 Safari(text-align: ".",需降级到
text-align: right+padding-left模拟 - 若内容含 HTML 标签(比如
<span class="highlight">12.34</span>),CSS 方案可能失效,而原生char属性仍能工作
真正需要 char 的场景其实很窄:比如生成报表的静态 HTML 导出,且必须兼容老 Firefox 或要求零 JS 渲染。其他情况,优先试 CSS 方案。



















