网站制造中导航栏目在网 站内部跳转实现方法
点击导航栏目在页面内部跳转;
在个别的html文档中 ,页面内部的锚点跳转,咱们通常利用 a 标签
<a href='#锚点Id'> </a>,同时在须要跳转到的地位 ,要设置一个锚点(很形象的懂得,渔船出海要停船了,避免漂走
,首先要抛锚大笑),怎么设置锚点,对应的元素 id="锚点id",如法一
<!DOCTYPE
html>
<html>
<head>
<meta charset="utf-8">
<title>红宝书练习
</title>
<style>
div{
width: 100%;
height: 500px;
border: 2px solid ;
background:
orange;
}
</style>
</head>
<body>
<ul>
<li><a
href="#div1">跳转div1</a></li>
<li><a href="#div2">跳转
div2</a></li>
<li><a href="#div3">跳转
div3</a></li>
</ul>
<hr>
<div
id="div1">div1</div>
<div id="div2">div2</div>
<div
id="div3">div3</div>
</body>
</html>
这种方法的毛病 页面的URL 会产生变更 如
URL :file:///C:/Users/31295/Desktop/html5实例/红宝书练习.html#div1,当点击上方<a>,页面内部跳转,同时上方URL的标红部分
也会产生变更 (这不是咱们想要的)
方法二,在js事件中通过window.location.hash="divId" ,改变# 号后面的 值
但地址也会产生变更,感到跟第一种方法没差别,甚至更麻烦。
方法三,利用Element.scrollIntoView()方法,让元素滚动到浏览器的窗
口可视区域,先看下方法对应的参数
element.scrollIntoView(align-top); // Boolean型参数
element.scrollIntoView()默认参数true;
element.scrollIntoView(scrollIntoViewOptions); // Object型
参数
1.Element.scrollIntoView() 等同于 Element.scrollIntoView(true) 也即默认值true,表示元素的顶端跟浏览器可视区域的
顶端对齐。
2.Element.scrollIntoView(false) 表示元素的底端跟浏览器可视区域的底端对齐。
scrollIntoViewOptions(Object型
参数)
{
behavior: "auto" |
"instant" | "smooth",
block:
"start" | "end",
}
1.block:"start" 相称于true,block:"end"
相称于false。
2.behavior能把持页面跳转的快慢 ,auto 跟instant 都是破即直接跳转到所在锚点,不够友爱,smooth表示平滑过渡到
所在锚点。
在react利用中,因为url 变更会波及路由跳转,所以第三种方法优选,怎么写呢?
scrollToAnchor = (anchorName) => {
if (anchorName)
{
// 找到锚点
let anchorElement = document.getElementById
(anchorName);
//假如对应的id锚点存在就跳转
if (anchorElement)
{
anchorElement.scrollIntoView({block: 'start', behavior:
'smooth'});
}
}
<ul&