您现在的位置是:网站首页> 编程资料编程资料
vue实现侧边定位栏_vue.js_
2023-05-24
373人已围观
简介 vue实现侧边定位栏_vue.js_
本文实例为大家分享了vue实现侧边定位栏的具体代码,供大家参考,具体内容如下
实现思路:
1.通过点击侧边栏,定位到响应的内容
2.滑动滑动栏,侧边栏同步高亮对应的item
效果图如下:

1. 通过点击侧边栏,定位到响应的内容
如果是用html的话我们可以用 锚点 的办法进行定位;
在vue中,我们可以通过获取组件的高度,将滑动栏定位到对应的位置
在进入主题之前我们需要先了解3个关于获取高度的属性
1.scrollTop 滑动栏中的滑块离视区最顶部的距离
document.documentElement.scrollTop || document.body.scrollTop
2.clientHeight 视区的高度
document.documentElement.clientHeight || document.body.clientHeight
3.scrollHeight 滑动栏里面的滑动块的高度
document.documentElement.scrollHeight || document.body.scrollHeight

vue中我们可以通过this.$refs.xxx.$el.offsetTop获取组件距离页面最顶部的距离,通过赋值给document.documentElement.scrollTop选中组件距离页面最顶部的高度,控制滑动框滑到页面对应位置。相关代码如下:
页面代码
// 页面组件代码 // 获取组件距离页面顶部高度 !!!侧边栏实现代码
// 侧边栏代码// 侧边栏js 2. 滑动滑动栏,侧边栏同步高亮对应的item
通过监听滑动栏滑动,获取滑动块距离页面顶部的高度,和组件距离页面顶部的高度进行对比,反向设置滑动栏的高亮位置;
// 监听滑动栏滚动,通过监听滚动到的位置,到 scrollChange() { const scrollTop = document.documentElement.scrollTop || document.body.scrollTop || 0; const windowHeight = document.documentElement.clientHeight || document.body.clientHeight || 0; const scrollHeight = document.documentElement.scrollHeight || document.body.scrollHeight || 0; const allContentOffsettop = [ 'offsetTopliveOverview', 'offsetTopprocurenmentAlert', 'offsetTopsalesOverview', 'offsetTopinquiryData', 'offsetToptransactionData']; if (scrollTop === 0) { if (this.active !== 'top') { this.active = 'top'; this.$refs.activeTip.style.transform = `translateY(${196}px)`; } } else if (scrollTop + windowHeight > scrollHeight || scrollTop + windowHeight === scrollHeight) { if (this.active !== 'transactionData') { this.active = 'transactionData'; this.$refs.activeTip.style.transform = `translateY(${157}px)`; } } else { for (let i = 0; i < allContentOffsettop.length; i++) { if (this[allContentOffsettop[i]] - 1 > scrollTop) { const contentName = allContentOffsettop[i - 1].replace('offsetTop', ''); if (this.active !== contentName) { this.active = contentName; this.$refs.activeTip.style.transform = `translateY(${(i - 1) * 39}px)`; } break; } } } }, }, };以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
您可能感兴趣的文章:
相关内容
点击排行
本栏推荐
