没写href的a标签不是链接,仅为普通容器;href="#"会跳转至页面顶部;相对路径易出错;target="_blank"必须配rel="noopener"防安全风险。

没写 href 的 a 标签根本不是链接
它只是个普通行内容器,和 span 几乎一样——点击无效、无默认下划线、鼠标 hover 不变手型、键盘 Tab 无法聚焦(除非手动加 tabindex)。HTML5 明确把它定义为“超链接占位符”,语义上不表示可跳转行为。
href="#" 为什么总跳到页面顶部
这是浏览器原生行为:# 被解析为空锚点,等价于跳转到当前页 ID 为空的元素,结果就是滚动到文档开头。常见错误是只加 href="#" 却没配 event.preventDefault()。
- 用
href="javascript:void(0)"并不可靠——某些浏览器会短暂卡顿或触发控制台警告 - 更稳妥的做法是:保留
href="#",但在 JS 中显式调用e.preventDefault() - 如果纯做交互按钮,直接换用
button更语义清晰,也免去样式重置麻烦
相对路径和绝对路径写错会导致 href 失效
路径错误不会报错,但点击后 404 或跳转到意料外的位置。关键区别在于解析起点:
-
href="about.html":从当前 HTML 文件所在目录开始找 -
href="./about.html":显式声明同级目录,更安全(尤其嵌套较深时) -
href="/about.html":从网站根目录开始找——本地双击打开 HTML 文件时会失效(file://协议下/指向系统根目录) -
href="https://example.com/about":必须带协议,漏掉http://或https://会被当成相对路径处理
target="_blank" 不配 rel="noopener" 有安全隐患
新窗口打开时,如果不加 rel="noopener",新页面可通过 window.opener 访问原始页面的 window 对象,可能被用于钓鱼或篡改原页面 DOM。
- 必须成对使用:
target="_blank" rel="noopener" - 如需更强隐私保护,可加
noreferrer(但会影响部分分析工具的来源统计) - 站内跳转(如
href="/docs/guide")完全不需要target和rel
href 的 a 标签,在屏幕阅读器中不会被识别为可交互元素,对无障碍访问是硬伤;而滥用 href="#" 又会让页面滚动失控——这两点在快速迭代中常被跳过验证。前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











