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
  • 第二、你加的高度变量要重置
  • 第三、滚到底部或者顶部时需要取消终止滚动函数

总结

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

相关文章

  • 手把手教你如何在vue项目中使用rem布局

    手把手教你如何在vue项目中使用rem布局

    公司内部一直有大屏的需求,也一直再做,中途也踩了一些坑,但是没有认真的来总结下,下面这篇文章主要给大家介绍了关于如何在vue项目中使用rem布局的相关资料,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2023-02-02
  • 详解vue结合el-table实现表格小计总计需求(summary-method)

    详解vue结合el-table实现表格小计总计需求(summary-method)

    这篇文章主要介绍了vue结合el-table实现表格小计总计需求(summary-method),本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2024-01-01
  • 解决vue eslint开发严格模式警告错误的问题

    解决vue eslint开发严格模式警告错误的问题

    这篇文章主要介绍了解决vue eslint开发严格模式警告错误的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-04-04
  • Vue3.0实现无限级菜单

    Vue3.0实现无限级菜单

    这篇文章主要为大家详细介绍了基于Vue3.0实现无限级菜单,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-07-07
  • 基于vue实现swipe轮播组件实例代码

    基于vue实现swipe轮播组件实例代码

    本篇文章主要介绍了基于vue实现swipe轮播组件实例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-05-05
  • 代替Vue Cli的全新脚手架工具create vue示例解析

    代替Vue Cli的全新脚手架工具create vue示例解析

    这篇文章主要为大家介绍了代替Vue Cli的全新脚手架工具create vue示例解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-10-10
  • Vue defineProperty使用教程

    Vue defineProperty使用教程

    Vue通过Object.defineProperty来实现监听数据的改变和读取(属性中的getter和setter方法) 实现数据劫持。下面简单记录一下,vue监听数据变化的原理
    2023-01-01
  • 记录一个van-list不断onLoad加载的坑及解决

    记录一个van-list不断onLoad加载的坑及解决

    这篇文章主要介绍了记录一个van-list不断onLoad加载的坑及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-04-04
  • uniapp中使用u-loadmore,loadText内容不随status改变刷新方式

    uniapp中使用u-loadmore,loadText内容不随status改变刷新方式

    这篇文章主要介绍了uniapp中使用u-loadmore,loadText内容不随status改变刷新方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-05-05
  • Vue项目中如何引入本地第三方JS库

    Vue项目中如何引入本地第三方JS库

    vue中常遇到第三方js,这篇文章主要给大家介绍了关于Vue项目中如何引入本地第三方JS库的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
    2023-06-06

最新评论