html无布局属性,排版必须用css;align、width等已废弃,应使用flex(一维)和grid(二维)布局,并结合语义化标签提升可访问性与seo。

HTML 本身没有“布局属性”,所有排版控制都依赖 CSS;写 align、width、bgcolor 这类 HTML 属性不仅无效,还会让代码难以维护、可访问性变差。
为什么不能用 align 或 width 做布局
这些是 HTML4 时代的内联表现属性,早已被 W3C 废弃。现代浏览器虽不报错,但会忽略或降级处理——比如 align="center" 在 <div> 上完全无效,<code>width="50%" 在非表格元素上也无作用。
- 语义污染:把样式逻辑塞进 HTML 标签,破坏结构与表现分离原则
- 无法响应式:百分比值在不同上下文中行为不一致,且无法配合媒体查询
- 覆盖困难:内联样式权重过高,后期用 CSS 覆盖需加
!important,埋下技术债
display: flex 和 display: grid 是唯二该学的布局机制
它们不是“可选项”,而是当前所有主流项目默认采用的布局基础。选哪个取决于维度需求:
将调研报告、方案对比、数据分析、需求梳理、会议纪要、设计说明、代码评审、学习笔记等任务产物输出为可在浏览器直接打开的单文件 HTML,替代 Markdown 作为最终交付物。Markdown 在信息密度、视觉清晰度和可分享性上已跟不上 AI 产物的丰富度,HTML 能同时承载排版、表格、SVG 等。
- 一维排列(如导航栏、按钮组、表单字段对齐)→ 用
display: flex - 二维网格(如仪表盘、图文混排、固定侧边栏+自适应主区)→ 用
display: grid - 别嵌套
flex做网格:三列等宽 + 每列内再分两行?直接上grid-template-areas,更清晰、更可控
示例:一个带页眉、侧边栏、主内容、页脚的响应式框架
<div class="layout">
<header>Header</header><aside>Sidebar</aside><main>Content</main><footer>Footer</footer>
</div>
<style>
.layout {
display: grid;
grid-template-areas:
"header header"
"aside main"
"footer footer";
min-height: 100vh;
}
header { grid-area: header; }
aside { grid-area: aside; }
main { grid-area: main; }
footer { grid-area: footer; }
</style>
语义化标签不是装饰,是布局的起点
用 <header></header>、<nav></nav>、<main></main>、<aside></aside>、<footer></footer> 替代一堆 <div class="header">,不只是为了“看起来规范”:
<ul>
<li>屏幕阅读器能准确识别区域角色,提升可访问性</li>
<li>搜索引擎更易提取内容层级,影响 SEO 权重分配</li>
<li>CSS 选择器更简洁:<code>main > article 比 .content .post 更稳定、不易误伤
:focus-within 等伪类在语义标签上的行为,浮动 div 不保证真正卡住初学者的,从来不是 flex 的 justify-content 怎么写,而是没意识到 HTML 标签本身就有默认显示行为(比如 <p></p> 自带 margin、<h1></h1> 是块级、<span></span> 是内联)。先理解这个,再叠加 CSS,才能稳住排版节奏。










