html 页面内锚点定位及跳转方法总结

第一种方法,也是最简单的方法是锚点用<a>标签,在href属性中写入DIV的id。如下:

<!DOCTYPE html>
<html>
<head>
<style>
div {
height: 800px;
width: 400px;
border: 2px solid black;
}
h2 {
position: fixed;
margin:50px 500px;
}
</style>
</head>
<body>
<h2>
<a href="#div1">to div1</a>
<a href="#div2">to div2</a>
<a href="#div3">to div3</a>
</h2>
<div id="div1">div1</div>
<div id="div2">div2</div>
<div id="div3">div3</div>
</body>
</html>

这种方法的缺点是点击锚点之后,浏览器的URL会发生变化,如果刷新可能会出现问题。 

第二种方法是在js事件中通过window.location.hash="divId"跳转,但地址也会发生变化,感觉跟第一种方法没区别,甚至更麻烦。

第三种方法是用animate属性,当点击锚点后,页面滚动到相应的DIV。接着上面的代码,具体添加如下代码:

<script type="text/javascript" src="http://code.jquery.com/jquery-1.8.0.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$("#div1Link").click(function() {
$("html, body").animate({
scrollTop: $("#div1").offset().top }, {duration: 500,easing: "swing"});
return false;
});
$("#div2Link").click(function() {
$("html, body").animate({
scrollTop: $("#div2").offset().top }, {duration: 500,easing: "swing"});
return false;
});
$("#div3Link").click(function() {
$("html, body").animate({
scrollTop: $("#div3").offset().top }, {duration: 500,easing: "swing"});
return false;
});
});
</script>

注意:运行上面的脚本的之前,先将为锚点增加相应的id,同时去掉href属性。   

$("html, body")可以替换为响应的div,如果不起作用,试着给该div增加overflow:scroll属性。

另外,脚本可以进一步优化,自己来试试

这样做的好处是:URL地址不会变,同时点击锚点时会自动响应scroll事件,不需要重新绑定。

缺点是:如果页面复杂的话,偏移值可能会发生变化需要算法辅助。

第四种方法是用js的srollIntoView方法,直接用:
document.getElementById("divId").scrollIntoView();
这种方法的好处,是URL不会变,同时能够响应相应的scroll事件,不需要算法什么的。

推介大家用第四种,我依次试了前三种,都有各种问题。

时间: 2024-08-26 23:43:25

html 页面内锚点定位及跳转方法总结的相关文章

页面内锚点定位及跳转方法总结

点击锚点跳转到相应DIV的问题. 第一种方法即最简单的方法是锚点用<a>标签,在href属性中写入DIV的id.如下: <!DOCTYPE html><html><head> <style> div { height: 800px; width: 400px; border: 2px solid black; } h2 { position: fixed; margin:50px 500px; } </style></head&

jQuery实现页面内锚点平滑跳转

平时我们做导航滚动到内容都是通过锚点来做,刷的一下就直接跳到内容了,没有一丝的滚动效果,而且 url 链接最后会有“小尾巴”,就像#keleyi,今天我就介绍一款 jquery 做的滚动的特效,既可以设置滚动速度,又可以在 url 链接上没有“小尾巴”. 效果体验:http://keleyi.com/keleyi/phtml/jqtexiao/37.htm HTML文件代码: <!DOCTYPE html> <html> <head> <meta charset=

导航固定时页面内锚点跳转问题

写在前面: 记录对一个小问题的不算解决的方法,大家如果有更好的方法,欢迎交流,谢谢 Demo百度云链接:http://pan.baidu.com/s/1qW9NLlM 问题说明:上面导航栏固定,页面内实现锚点平滑跳转,跳转时如何使页面处于导航栏之下? 解决方式:通过一个div,给div导航的高度,每次跳至div处 问题图片: 希望蓝色位于导航下方: 解决后的问题图片: 补加一个div,定位到红色处 页面平滑跳转代码javascript <script> $('.learnmore').clic

页面跳转方法(success和error)和重定向

页面跳转 在应用开发中,经常会遇到一些带有提示信息的跳转页面,例如操作成功或者操作错误页面,并且自动跳转到另外一个目标页面.系统的\Think\Controller类内置了两个跳转方法success和error,用于页面跳转提示,而且可以支持ajax提交. 使用方法很简单,举例如下: $User = M('User'); //实例化User对象 $result = $User->add($data); if($result){ //设置成功后跳转页面的地址,默认的返回页面是$_SERVER['H

jquery 在页面上根据ID定位(jQuery锚点跳转及相关操作) 经典

1.锚点跳转简介 Edit 锚点其实就是可以让页面定位到某个位置上的点.在高度较高的页面中经常见到.比如百度的百科页面,wiki中的page内容. 我知道实现锚点的跳转有两种形式,一种是a标签+name属性:还有一种就是使用标签的id属性.百度百科就是使用a标签的name属性来实现锚点跳转的. 比如: <a href="#2">波轮洗衣机介绍</a> <a name="2"></a> 但是上种方法使用了一个空标签,而且

Vue爬坑之旅(八):vue单页面中锚点跳转

一般情况下我们在html中使用锚点时会利用链接方式请求‘#+id名称’,此时会在url后面跟一个#号.但是在单页面中会有路由误判的情况.所以在单页面中锚点可改为参数传递的方式. 一.封装一个外部js:anchor.js //锚点跳转 function goAnchor(selector) { var anchor = this.$el.querySelector(selector);//获取元素 if(anchor) { setTimeout(()=>{//页面没有渲染完成时是无法滚动的,因此设

JS实现页面内跳转

使用js($.ajax中)实现页面内跳转(即:描点平滑跳转)的方法(aa为跳转目的标签的id): 在网络上有很多资料所说的:animate方法我试了并不好使,不知道是啥原因,欢迎大家指正,附上网络方法: 1 var oneTop = $("#aa").offset().top; 2 jQuery("html", "body").animate({ scrollTop: oneTop }, 0); 经过测试,如果不需要有滑动动画的话,可使用下面的语

关于页面中锚跳转问题

一般页面的锚跳转都是通过href="#id"的方式跳转,但是我的项目 ,ssh框架的 ,不知道什么原因,只要是href中#开头,就跳到项目默认页面index.jsp. 后来找到了别的办法,不用超链接 ,改用方法调用,用下面代码:onClick="window.location.hash= 'topp';" topp是我定义的锚点,结果好使了. 但是超链接失效的原因至今不知道,如果有知道的朋友请告诉一下  

超链接跳转到不同页面的锚点链接

在做前端的时候,有时会遇到这样一种情况:要在此页面跳转到另一个页面的某个地方.这种情况,就可以使用超链接和锚点链接进行调转了.比如要从index.html页面的某个超链接调转到single.html页面的底部,则此时可在single.html页面底部添加一个锚点.然后在index.html的超链接里加上此锚点的名称即可. index.html页面的超链接: <a href="single.html#CompanyProfile">企业概况</a> single.