href是HTML中a、link、area等标签指定目标地址的核心属性,缺之则链接失效;其值决定行为类型,如页面跳转、锚点滚动、邮件拨号或资源加载。

href 是 a、link、area 等标签里用来指定“目标地址”的属性,不是装饰用的,缺了它,链接就不生效。
不写 href 的 a 标签根本不是链接
浏览器只认带 href 的 a 为可点击链接:光标不会变手型,按回车/空格没反应,屏幕阅读器也不会读作链接。常见误写:
-
<a>点我</a>→ 纯文本,无跳转行为 -
<a href="">点我</a>→ 跳到当前页顶部(等价于href="#"),但会触发页面滚动 -
<a href="javascript:void(0)">点我</a>→ 阻止跳转,但语义错误,不利于可访问性
href 值的类型决定实际行为
值不是随便填 URL 就行,不同前缀触发不同机制:
-
href="/about"或href="https://example.com"→ 页面跳转(相对或绝对路径) -
href="#section1"→ 页面内锚点滚动(要求对应id="section1"元素存在) -
href="mailto:support@example.com"→ 唤起默认邮件客户端 -
href="tel:+8613800138000"→ 在移动设备上唤起拨号界面 -
href="theme.css"→ 仅在link标签中合法,用于加载 CSS;在a中写这个只是普通下载链接
link 标签里的 href 和 a 不是一回事
link 的 href 是声明式资源引用,不响应用户点击:
立即学习“前端免费学习笔记(深入)”;
-
<link rel="stylesheet" href="main.css">→ 浏览器自动加载并应用样式 -
<link rel="icon" href="favicon.ico">→ 指定网站图标 -
<link rel="preload" href="data.json" as="fetch">→ 提前加载资源,但不会执行或渲染
如果把 link 的 href 错写成 a 的逻辑(比如加 onclick 试图“模拟点击”),既无效也不必要。
真正容易被忽略的是:当 href 指向一个不存在的路径、跨域资源、或 MIME 类型不匹配(比如用 link 加载非 CSS 文件),浏览器通常静默失败——没报错,但样式不生效、图标不显示,得靠 Network 面板查状态码和响应头。



















