HTML锚点标签href属性中两个#号和单个#号的作用有什么区别?
两者存在明确差异,符合HTML URL片段标识符的标准规则
1. href="#"的作用
单个#属于空片段标识符:
- 点击后浏览器默认会滚动到当前页面的顶部
- 页面URL末尾会追加
#,不会触发页面重载 - 是最常用的无实际跳转逻辑的占位链接写法,通常会配合JS阻止默认行为来绑定点击事件。
2. href="##"的作用
HTML中href属性里的第一个#是片段标识符的分隔符,后面的所有内容都是要匹配的片段值,所以##对应的实际匹配目标是id或name属性为#的元素:
- 如果页面存在
id="#"或者name="#"的元素,点击后浏览器会滚动到该元素的可视区域,URL末尾追加## - 如果页面没有对应元素,点击后不会触发页面滚动,仅会在URL末尾追加
##,也不会重载页面
注意:绝大多数场景下的
href="##"都属于开发者笔误,或者模板渲染时多输出了一个#,极少有业务场景会主动将元素ID设置为#,所以实际使用中两者最直观的差异就是点击后前者会回到顶部,后者无滚动效果。
内容的提问来源于stack exchange,提问作者apex2022
相关产品推荐
相关产品推荐

