点击导航栏目,如何在页面内部跳转 您所在的位置:网站首页 web网页标题标签怎么做 点击导航栏目,如何在页面内部跳转

点击导航栏目,如何在页面内部跳转

#点击导航栏目,如何在页面内部跳转| 来源: 网络整理| 查看: 265

在普通的html文档中 ,页面内部的锚点跳转,我们通常使用 a 标签 ,同时在需要跳转到的位置 ,要设置一个锚点(很形象的理解,渔船出海要停船了,防止漂走,首先要抛锚大笑),怎么设置锚点,对应的元素 id="锚点id",如法一  

红宝书练习 div{ width: 100%; height: 500px; border: 2px solid ; background: orange; } 跳转div1 跳转div2 跳转div3     div1 div2

div3

 这种方法的缺点 页面的URL 会发生变化  如URL :file:///C:/Users/31295/Desktop/html5实例/红宝书练习.html#div1,当点击上方,页面内部跳转,同时上方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'}); } }

跳转div1 跳转div2 跳转div3

然后在react绑定Onclick事件触发函数即可,其中锚点id是要跳转到的锚点对应的Id

this.scrollToAnchor('锚点id')}>立即申请

方法四 利用bootstrap 数据监听插件,也可实现平缓跳转。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有