vue+element实现锚点链接方式

 更新时间:2024年07月24日 09:43:52   作者:Zh.冠军  
这篇文章主要介绍了vue+element实现锚点链接方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

vue+element锚点链接

代码块

    <el-row id="userManagement">
      <h1  @click="jump('userManagement')">用户管理</h1>
      <el-col :span="24">为了正常使用知产魔方,您需要在用户管理模块中,为代理所内部用户、外部用户开通知产魔方使用权限。</el-col>
    </el-row> 
export default {
	methods:{
        jump(domId){
            // 当前窗口正中心位置到指定dom位置的距离 

            //页面滚动了的距离
            let height = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop; 
            
            //指定dom到页面顶端的距离
            let dom = document.getElementById(domId);
            let domHeight = dom.offsetTop;
            
            //滚动距离计算
            var S = Number(height) - Number(domHeight);

            //判断上滚还是下滚
            if(S<0){
                //下滚
                S = Math.abs(S);	//Math.abs返回一个数的绝对值		
                //window.scrollBy:把内容滚动到指定的像素数
                window.scrollBy({ top: S, behavior: "smooth" });		
            }else if(S==0){
                //不滚
                window.scrollBy({ top: 0, behavior: "smooth" });
            }else{
                //上滚
                S = -S
                window.scrollBy({ top: S, behavior: "smooth" });
            }
        }
	},
	created() {}
}

效果图

vue+element锚点跳转+自动感应导航栏

最近来个需求,要做一个页面,每个模块都是百分百全屏且右侧有个导航栏能自动感应在哪个模块,点击也能直接跳转到该锚点。

其实难点也就那几个,慢慢捋一下就好,话不多说上代码!!

1、锚点跳转且点击哪个会模块右侧导航栏就会高亮

在这里插入图片描述

我这个导航栏是因为未来增加模块以免还要自己手动加了就直接调接口循环了,如果是固定的直接写死也行,看见那个:key=“key”了没,对,你想的没错,跟那个没关系,好了,不开玩笑了,那个给他动态赋予class的属性才是正确答案。

思路

使用循环的key与点击后传过去的key做对比,如果一样的话就给他添加相应的css。

具体实现

把传过去的key赋值给一个data里面的变量例如:index,然后在标签里使用三目运算符进行判断

这个也不算难点 ,还有很多种实现方法,比如通过路由判断、还有通过传路由判断,看个人喜欢与习惯吧。

2、关于翻页自动感应

思路

前面说了,我们是使用index来控导航栏中哪个模块高亮的

当鼠标往下滚动时让整个页面往下滚动整个页面的高度且index加一反之减一

具体实现

<div @mousewheel="mouseWheel"></div>
mouseWheel(e) {
if (e.wheelDelta || e.detail) {
if (e.wheelDelta > 0 || e.detail < 0) {
 // 当鼠标向上滚动时触发
}
if (e.wheelDelta < 0 || e.detail > 0) {
 // 当鼠标向下滚动时触发
}
}
}

在最外层容器中加入这个鼠标触发事件

然后就可以监听鼠标滚轮向上还是向下了

呃…想详细了解的朋友自行百度哈,这里不过多赘述

当鼠标向下滚动时我们使用

window.scrollTo(x,y);

来让页面进行滚动且让index加一反则减一

这样一来就能实现导航栏的自动感应了

但是要注重几个细节问题

  • 第一、当你到达了顶部或者底部时需要重置你的index
  • 第二、你加的高度变量要重置
  • 第三、滚到底部或者顶部时需要取消终止滚动函数

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 详解基于element的区间选择组件校验(交易金额)

    详解基于element的区间选择组件校验(交易金额)

    这篇文章主要介绍了详解基于element的区间选择组件校验(交易金额),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-01-01
  • Vue中使用h5 Plus的实现方法

    Vue中使用h5 Plus的实现方法

    这篇文章主要介绍了Vue中使用h5 Plus的实现方法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-10-10
  • Vue websocket封装实现方法详解

    Vue websocket封装实现方法详解

    项目中需要使用websocke,这个是我自己修修改改好多次之后用得最顺手的一版,分享一下。这个封装需要搭配vuex使用,因为收到的数据都保存在vuex中了,真的绝绝子好用,解决了我一大堆问题
    2022-09-09
  • Vue 项目性能优化方案分享

    Vue 项目性能优化方案分享

    本文是作者通过实际项目的优化实践进行总结而来,希望读者读完本文,有一定的启发思考,从而对自己的项目进行优化起到帮助
    2022-08-08
  • vue-for循环嵌套操作示例

    vue-for循环嵌套操作示例

    这篇文章主要介绍了vue-for循环嵌套操作,结合实例形式分析了vue.js使用for循环嵌套读取数据相关操作技巧,需要的朋友可以参考下
    2019-01-01
  • Vue自定义指令详解

    Vue自定义指令详解

    这篇文章主要介绍了Vue自定义指令详解,需要的朋友可以参考下
    2022-12-12
  • vue实现拖拽进度条

    vue实现拖拽进度条

    这篇文章主要为大家详细介绍了vue实现拖拽进度条,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-03-03
  • vue实现把页面导出成word文件的方法

    vue实现把页面导出成word文件的方法

    这篇文章主要为大家详细介绍了vue实现把页面导出成word文件的方法,文中的实现步骤讲解详细,并且有详细的代码示例,需要的小伙伴可以参考一下
    2023-10-10
  • 详细聊聊前端如何实现token无感刷新(refresh_token)

    详细聊聊前端如何实现token无感刷新(refresh_token)

    实现token无感刷新对于前端来说是一项非常常用的技术,其本质是为了优化用户体验,下面这篇文章主要给大家介绍了关于前端如何实现token无感刷新(refresh_token)的相关资料,需要的朋友可以参考下
    2022-11-11
  • Vue数据驱动模拟实现3

    Vue数据驱动模拟实现3

    这篇文章主要为大家详细介绍了Vue数据驱动模拟实现,教大家如何在某个对象中,新增某个属性,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-01-01

最新评论