JS如何实现在页面上快速定位(锚点跳转问题)

发布时间 - 2026-01-11 02:47:01    点击率:

本文介绍了JS如何实现在页面上快速定位(锚点跳转问题),分享给大家,具体如下:

1. 锚点跳转简介

锚点其实就是可以让页面定位到某个位置上的点。在高度较高的页面中经常见到。

锚点跳转有两种形式:

  • a标签 + name / href 属性
  • 使用标签的id属性

在html 4.0以前,只有使用 <a> 标签的 name 属性才能创建片段标识符。id 属性的出现,使所有 HTML 或 XHTML 元素都可以是片段标识符。这是因为 id 标识符几乎可以用在所有的标签中。<a> 标签为了能够和以前的版本相兼容而保留了 name 属性,同时也可以使用 id 属性。这些属性可以相互交换使用,可以把 id 属性看作是 name 属性的升级版本。name 和 id 属性都可以与 href 属性结合起来使用,这样一个 <a> 标签就可以同时作为超链接和片段标识符使用。

<a href="#he" rel="external nofollow" rel="external nofollow" >波轮洗衣机介绍</a>
<a href="#f" rel="external nofollow" ></a>

但是这种方法使用了一个空标签,而且有时候会出现锚点失效。所以建议采用id来绑定锚点,代码如下:

<a href="#he" rel="external nofollow" rel="external nofollow" >波轮洗衣机介绍</a><h2 id="#de">波轮洗衣机介绍</h2>

2. 含锚点跳转的URL地址

window.location.hash

【1】关于#

在页面的制作中,“#”的符号很常见,并且具有通用性。基本上,其表示的含义是id选择符。同样的,在页面的URL中,#也可以理解为id选择符之意,也就是页面跳转到含URL指向的id标签处。
例如输入一个地址https://www./view/121414.htm?pf=1#3

这个地址中末尾有个'#',这个就相当于告诉浏览器要跳转了,#后面跟着的3表示会在https://www./view/121416.htm?pf=1的页面中寻找符合#3特点的标签并且执行跳转。

【2】关于空锚点指向

如果URL中的#后面跟随的字符id在文中找不到,就会有两种情况:如果是在当前页面,除了URL地址变化了,其他的不会改变,页面不会有跳转;如果是从其他页面跳转过来,则页面会在顶部显示,'#'基本就是摆设。

【3】window.location.hash

用来获取或设置页面的标签值。https://www./article/22656.htm?dasdsa

3. Jquery下锚点的平滑跳转。

如果让页面平滑滚动到一个id为box的元素处,则JQuery代码只要一句话,关键位置如下:

$('html, body').animate({scrollTop: $('#box').offset().top}, 1000)

JS原生实现。

scrollTo() 方法可把内容滚动到指定的坐标。

scrollTo(xpos,ypos);

4. IE下锚点刷新失效及JQuery下的解决

【1】关于锚点刷新失效

锚点刷新失效就是指当按下刷新键F5时,即使此时URL的后面就随锚点,此锚点也是不起作用的。

【2】在Jquery中,不难实现。可以根据URL获取锚点,从而进一步获得对应锚点对象,然后再让页面的滚动高度为其距离页面

顶部的偏移值就可以了。使得页面无论是重新载入还是其刷新,其后面的锚点都起作用。

$(function() {
  var url = window.location.toString();
  var id = url.split('#')[1];
  if (id) {
    var t = $('#' + id).offset().top;
    $(window).scrollTop(t);
  }
})

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# JS  # 锚点跳转  # 页面锚点定位  # js锚点定位页面位置  # angularJs中跳转到指定的锚点实例($anchorScroll)  # 使用JS模拟锚点跳转的实例  # AngularJS实现的锚点楼层跳转功能示例  # 用Javascript实现锚点(Anchor)间平滑跳转  # js 实现锚点跳转示例解析  # 跳转  # 会在  # 就可以  # 是在  # 会有  # 有个  # 找不到  # 两种  # 其他的  # 较高  # 是从  # 给大家  # 这样一个  # 为其  # 可以使用  # 之意  # 按下  # 句话  # 有两种  # 结合起来 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 简单实现Android验证码  如何将凡科建站内容保存为本地文件?  微信小程序 HTTPS报错整理常见问题及解决方案  Linux安全能力提升路径_长期防护思维说明【指导】  家族网站制作贴纸教程视频,用豆子做粘帖画怎么制作?  大型企业网站制作流程,做网站需要注册公司吗?  Laravel如何配置Horizon来管理队列?(安装和使用)  laravel怎么使用数据库工厂(Factory)生成带有关联模型的数据_laravel Factory生成关联数据方法  教你用AI将一段旋律扩展成一首完整的曲子  Python图片处理进阶教程_Pillow滤镜与图像增强  如何用5美元大硬盘VPS安全高效搭建个人网站?  jimdo怎样用html5做选项卡_jimdo选项卡html5实现与切换效果【指南】  Laravel如何创建自定义中间件?(Middleware代码示例)  ,怎么在广州志愿者网站注册?  大同网页,大同瑞慈医院官网?  微信小程序制作网站有哪些,微信小程序需要做网站吗?  Firefox Developer Edition开发者版本入口  5种Android数据存储方式汇总  韩国服务器如何优化跨境访问实现高效连接?  Laravel如何使用Blade模板引擎?(完整语法和示例)  Laravel怎么实现搜索功能_Laravel使用Eloquent实现模糊查询与多条件搜索【实例】  Python正则表达式进阶教程_复杂匹配与分组替换解析  Laravel如何实现多语言支持_Laravel本地化与国际化(i18n)配置教程  如何在建站宝盒中设置产品搜索功能?  Linux系统命令中screen命令详解  EditPlus中的正则表达式实战(5)  Laravel的契約(Contracts)是什么_深入理解Laravel Contracts与依赖倒置  Swift中swift中的switch 语句  Laravel如何使用Telescope进行调试?(安装和使用教程)  Python文本处理实践_日志清洗解析【指导】  百度输入法全感官ai怎么关 百度输入法全感官皮肤关闭  Laravel与Inertia.js怎么结合_使用Laravel和Inertia构建现代单页应用  制作电商网页,电商供应链怎么做?  微信小程序 input输入框控件详解及实例(多种示例)  如何快速生成高效建站系统源代码?  如何在景安服务器上快速搭建个人网站?  北京专业网站制作设计师招聘,北京白云观官方网站?  如何获取上海专业网站定制建站电话?  如何构建满足综合性能需求的优质建站方案?  利用vue写todolist单页应用  Laravel Debugbar怎么安装_Laravel调试工具栏配置指南  高防服务器如何保障网站安全无虞?  Laravel Artisan命令怎么自定义_创建自己的Laravel命令行工具完全指南  Laravel如何为API编写文档_Laravel API文档生成与维护方法  北京网页设计制作网站有哪些,继续教育自动播放怎么设置?  如何在浏览器中启用Flash_2025年继续使用Flash Player的方法【过时】  Laravel怎么实现前端Toast弹窗提示_Laravel Session闪存数据Flash传递给前端【方法】  JavaScript Ajax实现异步通信  如何快速建站并高效导出源代码?  Laravel如何使用Guzzle调用外部接口_Laravel发起HTTP请求与JSON数据解析【详解】