HTML5结构标签默认样式因浏览器而异,需用CSS显式声明display: block及重置盒模型;IE8–9须引入html5shiv并配合条件注释才能识别这些标签。
浏览器中确实不一致不是你的代码写错了,而是 、、 这些标签本身没有统一的默认样式规范。Chrome 可能默认给 加了 margin,Firefox 可能对 有轻微 padding,Safari 甚至曾把 当成普通 inline 元素处理——这些差异全靠浏览器厂商自己解释。
别指望“浏览器自动对齐”,所有 HTML5 结构标签都要显式声明 display 和基础盒模型。最稳妥的做法是全局重置:
header, nav, section, article, aside, footer, main {
display: block;
margin: 0;
padding: 0;
}注意两点:
• display: block 是关键,IE8 及更早版本完全不认识这些标签,需配合 document.createElement() 或 html5shiv 才能触发该声明;
• 不要用 * { display: block } 这类暴力重置,会破坏 、 等原有行为。
这些旧版 IE 遇到 直接当未知元素忽略,既不渲染也不继承样式。仅加 CSS 无效,必须让 DOM 知道这些标签合法:
中引入 html5shiv.js(仅对 IE打开 Chrome/Firefox/Safari 的 DevTools,选中 类标签后重点看三处:
display 是否为 block(不是 inline 或 none)Layout 或 Box Model 视图,数值不一致就说明需要显式覆盖真正麻烦的往往不是标签不显示,而是 margin 折叠方式不同、flex 容器内行为不一致这类隐性问题——得盯着盒模型数值调,不能只看页面长什么样。