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-ui select多选绑定回显值问题

    element-ui select多选绑定回显值问题

    这篇文章主要介绍了element-ui select多选绑定回显值问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-04-04
  • Vue + ts实现轮播插件的示例

    Vue + ts实现轮播插件的示例

    这篇文章主要介绍了Vue + ts实现轮播插件的示例,帮助大家更好的理解和使用vue框架,感兴趣的朋友可以了解下
    2020-11-11
  • Vue驼峰与短横线分割命名中有哪些坑

    Vue驼峰与短横线分割命名中有哪些坑

    这篇文章主要介绍了Vue驼峰与短横线分割命名中的注意事项,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧
    2023-02-02
  • Vue解决跨域问题常见方法详解

    Vue解决跨域问题常见方法详解

    这篇文章主要介绍了Vue解决跨域问题常见方法,结合实例形式详细分析了vue出现跨域问题的原因,以及常见解决方案与相关注意事项,需要的朋友可以参考下
    2023-06-06
  • vue-resource post数据时碰到Django csrf问题的解决

    vue-resource post数据时碰到Django csrf问题的解决

    这篇文章主要介绍了vue-resource post数据时碰到Django csrf问题的解决,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-03-03
  • vue3如何使用eventBus订阅发布模式

    vue3如何使用eventBus订阅发布模式

    EventBus是一种发布/订阅事件设计模式的实践,下面这篇文章主要给大家介绍了关于vue3如何使用eventBus订阅发布模式的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-09-09
  • Vue3引入SVG图标的流程步骤

    Vue3引入SVG图标的流程步骤

    我们在开发 Vue 项目的时候会使用一些前端组件库,例如 Element、Ant Design 等,这些组件库虽然方便,但是也有一些缺点,比如内置的图标太少,例如我们开发医疗、财务、工程等一些前端项目,内置的图标不能满足我们的需求,所以我们常常在Vue项目中引入SVG图标
    2024-09-09
  • Vue中Vue-Baidu-Map基本使用方法实例

    Vue中Vue-Baidu-Map基本使用方法实例

    最近有一个项目需要用到地图来展示位置并进行数据交互,用vue-baidu-map实现出来,下面这篇文章主要给大家介绍了关于Vue中Vue-Baidu-Map基本使用的相关资料,需要的朋友可以参考下
    2023-03-03
  • Vue如何处理图片加载失败时自动替换备用图片

    Vue如何处理图片加载失败时自动替换备用图片

    这篇文章主要为大家详细介绍了当图片加载失败时,Vue如何实现自动替换备用图片功能,文中的示例代码简洁易懂,有需要的小伙伴可以了解下
    2024-11-11
  • vue-admin如何实现动态路由

    vue-admin如何实现动态路由

    这篇文章主要介绍了vue-admin如何实现动态路由问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-07-07

最新评论