利用jQuery srollTop()函数实现类似锚点的定位效果-兼容chrome,firefox,IE,safari

jquery锚点带动画跳转和返回顶部方便定位插件 立即下载

如题。

         在网页开发的过程中,锚点可以实现页面快速定位。

         《1》

         常见的情况,是同一个页面内导航和锚点的配合,但是跳转时是直接切换,效果生硬。

         《2》

          不同页面间的跳转,涉及到跳转后定位到设定的页面的锚点,可以使用URL传参实现。具体实现方法如下:

          在导航栏中设定好跳转到的页面的链接,”#“后面就是我们在A.html中预先定义好的锚点的"name"属性。注意,涉及到锚点兼容性的问题,所以,锚点的命名应该是"id"与”name“都定义,且值相同:                  

<a href="A.html#anchor"></a>
          《3》       

          在实际情况中,我遇到更多的情况是如下图所示的页面结构:

          在父级页面A.html中存在导航条,页面内嵌套了一个iframe。当用户点击导航栏中的导航按钮时,会改变iframe的src属性同时刷新iframe的内页,定位到在内页中已经预先定好的锚点位置中去。

          一开始,我使用锚点来实现这个功能,在chrome、safari及各个国内的套壳浏览器中均可以实现这个功能。但是到了firefox及IE下面,这个功能就失效了。通过分析,在firefox中,firefox禁止在iframe中进行锚点的切换。网上有解决这个问题的js现成代码,基本的思想是获取锚点距离显示器顶部高度,通过Jquery的scrollTo方法滑动到对应的位置上去。参考的链接:http://blog.youkuaiyun.com/zlxzlxzlxzlxzlx/article/details/8504571

          经过这篇文章以及高手同学的教导,我们可以通过js来模拟锚点穿越iframe到达内页,从而躲避开IE和firefox对锚点的兼容问题,同时实现更加流畅的页面滚动切换效果。

         

         父级页面中一个导航条导航菜单结构:

         

<a class="brand" href="javascript:void(0)"  target="carMainBox" onclick="getAndFocus('audi')"><!--audi-->
   <div class="audi"></div>
   <p>奥迪</p>
</a>
         其中函数getAndFocus('audi')就是控制穿越到iframe内部的切换函数,其中最主要是穿越iframe,获取到锚点的高度,使用scrollTo函数模拟,函数如下:

<script> 
function getAndFocus(brand){
       //获取父级页面中iframe的子页
	var iframeBox = document.getElementById("carMainBox").contentWindow;
        //获取子页面中的类名为‘sbrand’第一个锚点位置
	var point = iframeBox.document.getElementsByClassName("s"+brand);
        //如果子页中没有定义这个品牌的锚点
	if(point[0] == null )
	     alert("您所选择的品牌暂无活动车型,敬请期待!");
       //如果子页定义了这个锚点
	else{    //变换导航条选中样式
		 var ul = document.getElementById("left-nav");
		 var newLiSelected = document.getElementById(brand);
		 var OldLiSelected = document.getElementsByClassName("c-selected");
		 if(OldLiSelected[0]){
			 OldLiSelected[0].className = "c-unselected";
		 }
		 newLiSelected.className = "c-selected";
		 for(var i=0;i<=point.length;i++){
			 if(point[i].style.display =="block"){
	     		       var height = $(point[i]).offset().top+800;//关键点,获取所预先定义的元素的offset,再加上iframe距离顶部的高度
	     		       $.scrollTo(height, 300);//jquery函数,scrollTo(高度,速度)。这样子就可以实现跨越iframe完美实现锚点了。
			       return true;
			 }
			 if(i==point.length-1){
				 alert("您所选择的品牌暂无该价位的车型");
			 }
		 }
	     }
   }
</script>
        这样子操作的好处,就是基本兼容主流的浏览器。但是,这个方法有又引出了一个兼容性的问题,即IE不支持getElementsByClassName()这个方法。这个容易操作。我们可以通过JS来模拟这个函数,当然也可以使用jquery的类名选择器:

        在需要使用到这个方法的页面添加如下js函数:

//解决getElementById在IE下失效的函数
 function getElementsByClassName(classname){  
                    var d=document;  
                    var e=d.getElementsByTagName('*');  
                    var c=new RegExp('\\b'+classname+'\\b');  
                    var r=[];  
                      
                    for(var i=0,l=e.length;i<l;i++){  
                        var cn=e[i].className;  
                        if(c.test(cn)){  
                            r.push(e[i]);  
                        }  
                    }  
                    return r;  
     }//如果是IE浏览器  
    if(typeof document.getElementsByClassName !='function'){  
         document.getElementsByClassName=getElementsByClassName;  
     }//如果浏览器本身支持该方法,则默认使用原方法  
         添加了这些之后就能够完全支持使用js模拟锚点效果,穿透iframe。且这种方法完美支持各种主流浏览器。这是实现之后页面的效果:

        http://gd.qq.com/zt2013/gyh_shouye/index.htm
         
         srollTo函数作用很多,在页面切换之后,一般都会回复初始状态,我们可以使用srcollTo来返回到原始的位置,且效果非常棒。


         

vue项目中锚点定位替代方式 在vue项目中,使用锚点定位会和router的规则冲突,在项目中的表现就是第一次点击url改变了,但是没有跳转到锚点位置,再次点击才会跳转。所以在vue项目中定义一个方法不适用锚点定位: scrollToSection() { let section = document.getElementById('section') if (section) { section.scrollIntoView() } } html标签中绑定click事件就可以了 以上这篇vue项目中锚点定位替代方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持 立即下载

相关推荐

PyTorch多机训练Loss不一致问题排查指南:基于算子级一致性验证

比较二次训练过程中所有算子的误差,定位存在一致性问题的pytorch算子

Hi20240217的博客 1159

html中使用JQ自定义锚点偏移量

问题:一般情况下使用href跳转达到效果。如果页面中头部固定住了,点击瞄点的时候自动是最上面,头部会给它覆盖掉一部分,所以要在点击之后额外再加头部高度。如果有多个的话,封装js。

qq_44866810的博客 699

Monocle2拟时轨迹基因模块的GO富集解析

本文详细解析了如何对Monocle2拟时分析中得到的基因表达模块进行GO富集分析。通过从热图对象中提取聚类模块,并利用clusterProfiler等工具进行功能注释,将抽象的基因表达时序模式转化为可解释的生物学功能主题,如免疫应答、细胞外基质组织等,从而深入理解细胞命运转变的驱动机制。

gpt4scribbler的博客 500

jquery 定位到指定元素位置,带动画,类似于锚点

代码】jquery定位到指定元素位置,带动画,类似于锚点。

qq_34297991的博客 1041

systrace分析 之 问题初步定位

如下surfaceflinger空缺点,上面对应的bufferTX 中有buffer,但VSYNC-SF 过来后,SurfaceFlinger却没有去取,检查测试app “android.settings”, 也没有GPU completion 时间长的问题,所以该部分可以请SurfaceFlinger的owner 进一步确认为何不取buffer。. GPU拿的是acquireFence HWC拿的是releaseFence, GPU是绘图,HWC是合成显示,这两个是互相等待的关系,

yangzex的专栏 3197

开源Agent Skill让AI画图不再翻车:从数据到专业图表全流程

在人工智能与数据可视化交叉领域,让模型直接生成图表往往伴随字体乱码、坐标轴密集、配色失调等高频问题。Agent Skill作为一种可复用的能力封装机制,将专业绘图流程固化为标准化操作手册,从数据特征识别、图表类型决策到代码生成与渲染校验形成完整闭环。它不再依赖临时提示词的一次性发挥,而是让AI按领域专家的思维执行任务,显著提升出图质量与稳定性。这种能力在数据分析报告、运营日报、论文插图等场景具有广泛实用价值,尤其适用于需要快速产出规范化图表的工作流。本文即从这一技术范式出发,介绍一个GitHub上获得2.5

weixin_33851429的博客 968

jquery之锚点定位和jquery模拟锚点定位效果,页面滚动到相对应的位置时,所在的导航文字高亮显示

1.常见的锚点定位效果: <a name="print"></a> <div id="print"> <!-- HTTP请求没有 # --> 或 <a href="#print"></a> <div id="print"> <!-- HTTP请求有 # --> 这种方法,如果网页中有顶部固定导航栏,那么常见的锚点定位就会被遮住了一部分,很难用样式弥补。于是可以考虑第二种方法 js模拟锚点跳转效果 2.js模拟

夜阑珊妖妖 2591

自定义Usecase/Pipeline

Summary of Custom Usecase and Pipeline Configuration in SA8650 QCX Framework This article elaborates on the complete process of customizing a new Usecase and Pipeline based on the SA8650 QCX framework to meet OEM and Tier1 customization requirements, with

qq_39257814的博客 930

html 锚点、jquery实现网页定位导航,锚点定位

<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <script src="https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js"> </script> <style type="text/css"> *{margin:0;padding:0;} body{font-size:12px;line-height.

jack_rose_me的博客 687

[QMT和ptrade量化交易小白入门]-122、基于聚类分析的动态股票池构建与ETF轮动策略,回测年化 132.09%

本专栏主要是介绍QMT和ptrade的基础用法,常见函数,写策略的方法,也会分享一些量化交易的思路,大概会写200篇左右。QMT的相关资料较少,在使用过程中不断的摸索,遇到了一些问题,记录下来和大家一起沟通,共同进步。

木头大左的博客 1029

cesium加载geotiff的 四种方法

本文介绍了在Cesium中加载GeoTIFF数据的两种主要方法。首先解析了核心前置知识,包括坐标系匹配、数据类型区分和性能优化。方法1详细演示了如何将RGB影像GeoTIFF转换为Cesium影像图层,包含从数据解析到Canvas转换的完整代码流程。方法2则针对高程数据(DEM)处理,展示了前端直接解析构建地形网格的方案。文章提供了完整的代码示例和关键实现要点,适用于卫星影像、专题图和数字高程模型等多种GeoTIFF数据类型在三维场景中的可视化需求。

大剑师兰特的GIS世界 395

jq移动端点击导航滚动对应位置并跟随联动效果

使用jq实现一个移动端锚点效果 页面布局 导航栏布局 <div class="tabs"> <ul class="list-item"> <li class="active">首页</li> <li>详情</li> ...

小周sri的码农 1754

【数字孪生与仿真技术】05:从原理到实战:MATLAB/Simulink在航空航天GNC系统开发中的深度解析(含全流程代码与认证指南)

摘要:本文系统阐述MATLAB/Simulink在航空航天制导、导航与控制(GNC)系统开发中的核心应用。通过解析GNC系统高保真动力学建模、多源导航传感器融合、鲁棒控制算法设计等关键技术原理,结合Virgin Orbit运载火箭、CubeSat等真实案例,展示从需求分析、模型搭建、仿真验证到代码生成与认证的完整开发流程。文中提供1200余行关键代码、8个可复用Simulink模型及详细执行结果展示,涵盖DO-178C认证支持、实时性能优化等工业级开发规范,为航空航天工程师、科研人员提供可落地的参考方案。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 1657

基于Layui用JQ实现锚点定位/电梯导航(附带效果GIF)

今天要给页面用JQ实现一个锚点定位,就是经常听到的电梯导航,京东和淘宝的主页都有这样的应用,一般是用于页面太长,方便用户定位到需要的位置,就是放的锚点。 下面看看HTML内容: //这个是导航栏 <div class="side-nav"> <span class="active">选择评分机</span> //默认选择的位置 <span>本机IP设置</span> <span>平..

分享、进步、收获!!! 1609

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

scrollTop是什么及用法说明

scrollTop属性是什么? 有些情况下,“元素中内容”的高度会超过“元素本身”的高度, scrollTop指的是“元素中的内容”超出“元素上边界”的那部分的高度。 通过一个实例演示来讲述scrollTop属性是什么 下面的演示中,外层元素的高度值是200px,内层元素的高度值是300px。很明显,“外层元素中的内容”高过了“外层元素”本身.当向下拖动滚动条时,有部分内容会隐没在“外层元素的上边界”之外,s...

a123789999的博客 1万+

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

JavaScript第 11 篇,JavaScript中的scrollTop(JavaScript中的scrollTop,JS滚动到顶部)

⭐scrollTop是JavaScript中一个非常有用且重要的方法,它用于获取或设置元素的垂直滚动条位置,实现各种滚动相关的功能,无论是回到顶部、滚动到指定位置还是监听滚动事件,都需要用到scrollTop,在本文中,我们将深入了解scrollTop的用法和实际应用,这是一张scrollTop的关系图,仅供参考

AI Agent 全栈架构师(AI + GIS + Backend)& 数字芯片系统架构师(FPGA),NorthCity Smile的博客(NcSmile,博主域名:https://ncmile.blog.youkuaiyun.com) 2万+

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

【JavaScript】scrollTop和scrollHeight在滚动事件中的使用

scrollTop和scrollHeight

小秀的博客 3316

html:iframe标签以及a标签的锚点和制作书签

html的iframe标签以及将iframe标签和超链接a标签联系起来制作书签以及a标签的锚点。

YangLu888 1732

scrollTop、scrollLeft、scrollWidth、scrollHeight

scrollTop、scrollLeft、scrollWidth、scrollHeight

pig_ning的博客 4023

深度理解Jquery 中 scrollTop() 方法

这是工作遇到scrollTop() 方法。为了强化自己,把它记录在博客园当中。 下面就开始scrollTop 用法讲解: scrollTop() 定义和用法 scrollTop() 方法设置或返回被选元素的【垂直滚动条位置】。 Note: 当滚动条位置位于最顶部时,位置是0;当用于返回位置时: 该方法返回 第一个匹配元素的滚动条的垂直位置。当用于设置位置时: 该方法设置 所有...

weixin_34239592的博客 920

scrollTop()方法

scrollTop设置滚动条用法 前提 工作中需要做一个点击右侧网元或板卡,左侧topo图滚动到对应位置 用到的知识点 scrollTop(),position(),工作环境中用了Jtopo,Ztree scrollTop定义与用法 scrollTop() 方法返回或设置匹配元素的滚动条的垂直位置。 scroll top offset 指的是滚动条相对于其顶部的偏移。 如果该方法未设置参数,则返回以像素计的相对滚动条顶部的偏移。 $(selector).scrollTop(offset)

muxi229的博客 3万+

jquery锚点定位

jquery实现锚点定位 这里主要是通过jquery实现了一个简单的滚动触发锚点高亮,以及点击锚点触发滚动的功能 $leftnav为左侧楼层导航栏(left-nav),右侧right-content-body为滚动区域。主要是利用了scrollTo()和对滚动区域scroll事件的监听实现锚点定位及锚点高亮。先附上代码 var $leftnav = $('.form-content .build...

love__xyy的博客 3510

浅谈scrollTop属性

最近心血来潮,突然想到鼠标滚动改变背景的效果,思路很明确,通过获取鼠标滚动条距离顶端的位置改变背景。实际操作中却遇到不少问题。首先,便是针对鼠标滚动对象的选取,其次,百度了之后发现srollTop这个属性在不同的浏览器中存在一定的兼容性的问题:document.documentElement.scrollTop(火狐),document.body.scrollTop(谷歌),有了兼容性代...

dbmt2014的博客 695

Anchorific.js:自动生成锚点和导航的jQuery插件

Anchorific.js:自动生成锚点和导航的jQuery插件 项目介绍 在现代Web开发中,文档的结构化和导航的便捷性是提升用户体验的关键。Anchorific.js 是一个强大的jQuery插件,它能够自动为页面中的标题标签生成锚点,并根据这些标题生成嵌套的导航菜单。无论是单页项目的文档,还是复杂的知识库,Anchorific.js都能帮助开发者快速构建出结构清晰、易于导航的内容页面。 项目...

gitblog_00254的博客 1189

Jquery锚点导航定位、css设置头部左侧固定,右侧内容滚动

锚点导航,点击左侧导航定位到标题

weixin_42064877的博客 1244
上一篇: jQuery Mobile样式加载问题
下一篇: 使用Jquery实现顶部导航栏在页面滑动到自身所在位置之后固定在顶部的效果
GiantChan
博客等级 码龄16年 76粉丝 108原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值