用<table>排版个人主页属于反模式,会导致可访问性差、SEO不友好、响应式难适配、后期改版成本高;仅建议临时使用,长期应采用<section>配合CSS布局。

表格不是语义化主页的推荐方案
直接说结论:用 <table> 排版个人主页,现在属于反模式。浏览器渲染没问题,但会带来可访问性差、SEO 不友好、响应式难适配、后期改版成本高这四个实际问题。如果你只是想快速搭个能看的页面,又没学过 CSS 布局,那可以临时用;但只要后续要加手机适配、换主题、或让屏幕阅读器读出来,就得重写。
如果非要用 table,必须绕开的三个坑
常见错误是把整个页面塞进一个大 <table>,然后靠 colspan 和 rowspan 硬凑布局——结果是结构混乱、单元格嵌套多、CSS 很难精准控制边框和间距。
- 只用
<table>做局部对齐,比如“联系信息”那一栏的键值对(邮箱:/xxx@example.com),用两列表格最稳妥 - 禁止在
<table>里再套<div>或其他布局标签——语义冲突,部分旧 IE 渲染会错位 - 必须写
<caption>,哪怕只是<caption>我的联系方式</caption>,否则屏幕阅读器无法识别表格用途
真正轻量又可用的替代写法
不用框架、不学 Flex/Grid,也能写出比 <table> 更干净的主页排版。核心就两条:用 <section> 切分区块,用 display: inline-block 或 float 做简单左右并列。
例如头像+简介并排:
立即学习“前端免费学习笔记(深入)”;
<section class="profile">
<img src="avatar.jpg" alt="我的照片" width="120">
<div class="bio">
<h2>张三</h2>
<p>前端开发者,喜欢写小工具</p>
</div>
</section>
CSS 只需三行:
.profile img { float: left; margin-right: 16px; }
.profile .bio { overflow: hidden; }
.profile .bio h2 { margin-top: 0; }
这样既语义清晰,又天然支持文字缩放、打印样式,还比表格少写一半标签。
移动端一加就崩?那是 table 的固有缺陷
<table> 在手机上默认横向滚动,除非你手动加 overflow-x: auto 和固定列宽——但列宽一设死,字体放大后内容就被截断。而用块级元素 + max-width + margin: auto,一行 CSS 就能居中自适应:
body { max-width: 800px; margin: 0 auto; padding: 0 16px; }
真要兼容 iOS Safari 和 Android Chrome,别碰 <table> 做整体布局。它不是不能用,是用了之后,下一个需求(比如加暗色模式)就会变成推倒重来。



















