您当前的位置:首页 > 电脑百科 > 程序开发 > 语言 > HTML

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

时间:2019-10-23 17:09:33  来源:  作者:

项目中经常会出现点击跳转锚点的方法,比如给一个a标签一个href=“#锚点”,然后要跳的锚点给个id=“锚点”,这样就实现简单的跳转,但是这样在url地址栏后面都会出现一个诸如www.solves.cm.cn#锚点,然后你点击给一次后退都是退回上一个选择的锚点url,这里总结一些跳转锚点的方法。

第一种方法,也是最简单的方法是锚点用<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();

比如:

document.querySelector("#roll1").onclick = function(){

document.querySelector("#roll1_top").scrollIntoView(true);

}

这里就是点击id是#roll1的元素可以滚动到id是#roll1_top的地方,这里的#roll1和#roll1_top最好是一一对应的,

这种方法的好处,是URL不会变,同时能够响应相应的scroll事件,不需要算法什么的。代码如下:

<html>

<head>

<title>HTML5_ScrollInToView方法</title>

<meta charset="utf-8">

<script type="text/javascript">

window.onload = function(){

/*

如果滚动页面也是DOM没有解决的一个问题。为了解决这个问题,浏览器实现了一下方法,

以方便开发人员如何更好的控制页面的滚动。在各种专有方法中,HTML5选择了scrollIntoView()

作为标准方法。

scrollIntoView()可以在所有的HTML元素上调用,通过滚动浏览器窗口或某个容器元素,

调用元素就可以出现在视窗中。如果给该方法传入true作为参数,或者不传入任何参数,那么

窗口滚动之后会让调动元素顶部和视窗顶部尽可能齐平。如果传入false作为参数,调用元素

会尽可能全部出现在视口中(可能的话,调用元素的底部会与视口的顶部齐平。)不过顶部

不一定齐平,例如:

//让元素可见

document.forms[0].scrollIntoView();

当页面发生变化时,一般会用这个方法来吸引用户注意力。实际上,为某个元素设置焦点也

会导致浏览器滚动显示获得焦点的元素。

支持该方法的浏览器有 IE、Firefox、Safari和Opera。

*/

document.querySelector("#roll1").onclick = function(){

document.querySelector("#roll_top").scrollIntoView(false);

}

document.querySelector("#roll2").onclick = function(){

document.querySelector("#roll_top").scrollIntoView(true);

}

}

</script>

<style type="text/css">

#myDiv{

height:900px;

background-color:gray;

}

#roll_top{

height:900px;

background-color:green;

color:#FFF;

font-size:50px;

position:relative;

}

#bottom{

position:absolute;

display:block;

left;0;bottom:0;

}

</style>

</head>

<body>

<button id="roll1">scrollIntoView(false)</button>

<button id="roll2">scrollIntoView(true)</button>

<div id="myDiv"></div>

<div id="roll_top">

scrollIntoView(ture)元素上边框与视窗顶部齐平

<span id="bottom">scrollIntoView(false)元素下边框与视窗底部齐平</span>

</div>

</body>

</html>

个人建议使用第四种方法。



Tags:html   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
问:如何用 JS 一次获取 HTML 表单的所有字段 ?考虑一个简单的 HTML 表单,用于将任务保存在待办事项列表中: <form> <label for="name">用户名</label> <input type="text...【详细内容】
2020-10-12  Tags: html  点击:(76)  评论:(0)  加入收藏
再见HTML ! 用纯Python就能写一个漂亮的网页我们在写一个网站或者一个网页界面的时候,需要学习很多东西,对小白来说很困难!比如我要做一个简单的网页交互:天啊,听听头都大呢!其实...【详细内容】
2020-07-09  Tags: html  点击:(62)  评论:(0)  加入收藏
在学习一门编程语言之前,了解它的特性,带着对特性的好奇和疑问去学习是最快最好的学习方法。就像你知道某个地方有很多宝藏,带着藏宝图去寻找宝藏,你一定会大有收获的。编程语...【详细内容】
2020-06-05  Tags: html  点击:(62)  评论:(0)  加入收藏
有好多次,别人说我算不上程序员,因为我在用HTML + CSS编程。我非常伤心,因为别人都不认为我是开发人员。我们讨论了好几个小时,网上也有很多关于这个话题的讨论。但仍然还有人否认这一点,那么就让我们在本文中好好探讨一番...【详细内容】
2019-12-16  Tags: html  点击:(79)  评论:(0)  加入收藏
HTML 是什么? 表示超文本标记语言(Hyper Text Markup Language) 描述了网页的结构 由一些列元素组成 元素告诉浏览器如何显示内容,由标签表示 标签标记了“标题”,“段落”,“表”...【详细内容】
2019-12-12  Tags: html  点击:(102)  评论:(0)  加入收藏
本篇文章给大家带来的内容是关于html meta标签使用及属性的详细分析,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。自学前端开始,我对meta标签接触不多,主要把...【详细内容】
2019-11-04  Tags: html  点击:(111)  评论:(0)  加入收藏
项目中经常会出现点击跳转锚点的方法,比如给一个a标签一个href=“#锚点”,然后要跳的锚点给个id=“锚点”,这样就实现简单的跳转,但是这样在url地址栏后面都会出现一个诸如www.s...【详细内容】
2019-10-23  Tags: html  点击:(102)  评论:(0)  加入收藏
在章中,我介绍了一种使用类似CSS的选择器语法的快速编写HTML代码的新方法-一组用于高速HTML和CSS编码的便捷工具。您花费多少时间编写HTML代码:所有这些标记,属性,引号,花括号等...【详细内容】
2019-10-08  Tags: html  点击:(144)  评论:(0)  加入收藏
和 JavaScript、CSS 相比,HTML 经过三十多年的发展,似乎逐渐走进无人问津的角落,如何才能让 HTML 再次回到人们视野的中心。...【详细内容】
2019-09-10  Tags: html  点击:(156)  评论:(0)  加入收藏
offsetHeight, offsetWidthHTMLElement.offsetHeight 是一个只读属性,它返回该元素的像素高度,高度包含该元素的垂直内边距和边框,且是一个整数。HTMLElement.offsetWidth 是一...【详细内容】
2019-09-02  Tags: html  点击:(186)  评论:(0)  加入收藏
▌简易百科推荐
此文由掘金@天行天忌授权发布,前端晚间课对其内容进行微改。 HTML,超文本标记语言,是一种用于创建网页的标准标记语言。自从引入 HTML 以来,它就一直用于构建互联网。与 JavaScr...【详细内容】
2021-11-23  前端晚间课    Tags:HTML6   点击:(327)  评论:(0)  加入收藏
HTML是什么?超文本标记语言(Hyper Text Markup Language),标准通用标记语言下的一个应用。HTML 不是一种编程语言,而是一种标记语言 (markup language),是网页制作所必备的。“...【详细内容】
2021-11-05  人生三部曲丶    Tags:HTML   点击:(40)  评论:(0)  加入收藏
一、iframe标签 自己编写的页面中如果要引用外部的页面的话,可以使用iframe标签来实现。为了更好地理解举个例子,前面几篇中我们都是在index.hmtl中编写代码。如果有个需求是...【详细内容】
2021-11-03  HillelDu    Tags:html   点击:(29)  评论:(0)  加入收藏
我们倾向于使用HTML与CSS、JavaScript等,使我们的网站或博客看起来更有吸引力,但你知道仅HTML就有很多实用的秘密,可能会派上用场,帮助你设计一个华丽的网站?下面是一些很酷的HTM...【详细内容】
2021-08-13  杭州程序员小张    Tags:HTML   点击:(90)  评论:(0)  加入收藏
meta 标签分两大部分:HTTP 标题信息(http-equiv)和页面描述信息(name)。 1、声明文档使用的字符编码<meta charset=&#39;utf-8&#39;>以下设置更为详细:<meta http-equiv="Content-...【详细内容】
2021-08-12  简易编程    Tags:meta标签   点击:(91)  评论:(0)  加入收藏
本节我们讲HTML表单标签,当你在网页输入框提交一个数据,这条数据一般是提交给了服务器,然后服务器根据请求返回你想要的数据,这个你输入信息的输入框或者提交的按钮就是HTML表...【详细内容】
2021-06-25  科技现象    Tags:HTML   点击:(141)  评论:(0)  加入收藏
背景日常工作中,项目编程免不了需要使用配置文件,早期yaml出现之前,大部分配置文件采用xml形式,但是以xml格式储存的数据要比以其他格式(如json、yaml)储存占有的空间要大得多,因为...【详细内容】
2021-06-21  爱读书的程序员    Tags:yaml   点击:(265)  评论:(0)  加入收藏
XML; 是什么? Extensible Markup Languare 可扩展标记型语言 为什么要有XML? 1.HTML的标签是固定的,不可以改变,也不可以进行一个&middot;&middot;&middot;扩展 2.HTML语法松散...【详细内容】
2021-06-01  LeviT    Tags:XML   点击:(193)  评论:(0)  加入收藏
同事跟我说他用jQuery取不到页面上隐藏元素input的值,他的html页面大概内容如下。<!DOCTYPE html><html lang="zh"> <head> <meta http-equiv="Content-Type" content="text/...【详细内容】
2021-05-18  IT洞察者    Tags:Html   点击:(220)  评论:(0)  加入收藏
HTML5语义化与新特性什么是HTML语义化?表示选择合适的标签(语义化标签)便于开发者阅读和写出更优雅的代码为什么要使用语义化标签?1). 在没有CSS样式的情况下,页面整体也会呈现...【详细内容】
2021-03-02      Tags:HTML   点击:(236)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条