h1标签在页面中必须且仅出现一次,代表主标题;用其包裹logo文字(如“京东”)可兼顾语义、SEO与可访问性,纯img或隐藏文字会破坏结构逻辑。
h1 标签在页面中应且仅应出现一次,代表整个页面的主标题;用它包裹 logo 文字,是兼顾语义、SEO 和可访问性的最简方案。强行删掉文字、用 img 替代、或把 h1 套在导航外层,都会破坏结构逻辑。
h1 包 logo 文字,而不是只放图片?搜索引擎和屏幕阅读器依赖 h1 判断页面主题。纯 img 标签即使有 alt,也缺乏 HTML 语义层级;而空 h1 或 display: none 会直接被忽略。正确做法是让文字“存在但不可见”——既满足爬虫抓取,又不干扰视觉呈现。
h1 内必须包含可读文本(如“京东”“小米官网”),不能为空或仅含空格aria-hidden="true" 或 visibility: hidden 隐藏文字,它们可能被读屏器跳过h1 logo,内页需改用 h2 起始,避免多 h1 结构混乱text-indent: -9999px 还安全吗?现代替代方案有哪些?该写法仍可用,但有兼容性隐患:在 flex 或 grid 容器中,text-indent 可能失效;某些高缩放比下文字仍微露;Safari 对负值处理偶有偏差。更稳妥的组合是:
font-size: 0 —— 简单直接,适用于块级 a 或 span,但需确保父元素未设置 line-height 导致高度异常position: relative; top: -9999px + overflow: hidden —— 更可靠,尤其配合固定宽高的容器h1::before { content: ""; display: block; width: 100%; height: 100%; background: url(logo.png); },再对原文字设 font-size: 0,兼容性好且不依赖缩进常见错误是嵌套过深或标签错位,比如把 a 放在 h1 外、或用 div 替代 h1。标准结构应为:
立即学习“前端免费学习笔记(深入)”;
<header> <h1 class="logo"> <a href="/">小米官网</a> </h1></header>
关键点:
h1 是容器,a 是其唯一子元素(不是反过来)a 必须带 href,否则失去链接语义,也影响 SEO 权重传递a 设宽高、display: block、背景图,而非给 h1 直接设背景background-image,记得加 background-size: contain 或 cover,避免拉伸失真很多人调完 PC 端就收工,但以下三点上线前必查:
text-indent 负值可能不够大,导致文字半露——建议用 em 单位(如 -999em)而非 px
background-color 是否需适配