vue监听滚动事件的方法


Posted in Vue.js onDecember 21, 2020

vue中监听滚动事件,然后对其进行事件处理,一般有:1. 滚动到顶部吸附; 2. 根据滚动的位置激活对应的tab键(锚链接tab键)

这两种方式的处理都是可通过监听scroll来实现

mounted(){
window.addEventListener('scroll',this.handleScroll) // 监听滚动事件,然后用handleScroll这个方法进行相应的处理
}

处理方法

1. 滚动到顶部吸附

html元素

<!--如果isFixed为true的话,就添加class is_fixed 设置固定定位-->
<div id="boxFixed" :class="{'is_fixed' : isFixed}">
这个是要滚动到顶部吸附的元素
</div>

methods方法

handleScroll(){
let scrollTop = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop // 滚动条偏移量

let offsetTop = document.querySelector('#boxFixed').offsetTop; // 要滚动到顶部吸附的元素的偏移量

this.isFixed = scrollTop > offsetTop ? true : false; // 如果滚动到顶部了,this.isFixed就为true
}

2. 根据滚动的位置激活对应的tab键(锚链接tab键)

vue里实现锚链接,不能直接用a链接方式,因为用的是hash路由,直接a链接会跳转路由,可用scrollIntoView ,具体参照 https://developer.mozilla.org/zh-CN/docs/Web/API/Element/scrollIntoView

(1) 实现锚链接:

<div class="flexitem" v-for="(item,index) in tabs" :class="seeThis==index?'active':''"><a href="javascript:void(0)" rel="external nofollow" @click="goAnchor(index)">{{item}}</a></div>

<div id="anchor1">block1</div>

(2) 实现滚动到相应的位置激活tab

data(){
return{


seeThis:0,


tabs:['tab0','tab1','tab2'],

}
},
methods:{

goAnchor(index) { // 也可以用scrollIntoView方法, 但由于这里头部设置了固定定位,所以用了这种方法


// document.querySelector('#anchor'+index).scrollIntoView()


this.seeThis = index; var anchor = this.$el.querySelector('#anchor'+index)


document.body.scrollTop = anchor.offsetTop-100


document.documentElement.scrollTop = anchor.offsetTop-100

},
}
methods:{
handleScroll(){


var anchorOffset0 = this.$el.querySelector('#anchor0').offsetTop-100


var anchorOffset1 = this.$el.querySelector('#anchor1').offsetTop-100


var anchorOffset2 = this.$el.querySelector('#anchor2').offsetTop-100


if(scrollTop>anchorOffset0&&scrollTop<anchorOffset1){



this.seeThis = 0


}


if(scrollTop>anchorOffset1&&scrollTop<anchorOffset2){



this.seeThis = 1


}


if(scrollTop>anchorOffset2){



this.seeThis = 2


}

},
}

以上就是vue监听滚动事件的方法的详细内容,更多关于vue监听滚动事件的资料请关注三水点靠木其它相关文章!

Vue.js 相关文章推荐
vue+vant实现购物车全选和反选功能
Nov 17 Vue.js
vue实现广告栏上下滚动效果
Nov 26 Vue.js
解决Vue-cli3没有vue.config.js文件夹及配置vue项目域名的问题
Dec 04 Vue.js
vue+elementUI动态增加表单项并添加验证的代码详解
Dec 17 Vue.js
在vue项目中封装echarts的步骤
Dec 25 Vue.js
Vue3 Composition API的使用简介
Mar 29 Vue.js
vue Element-ui表格实现树形结构表格
Jun 07 Vue.js
Vue3.0写自定义指令的简单步骤记录
Jun 27 Vue.js
前端vue+express实现文件的上传下载示例
Feb 18 Vue.js
vue项目配置sass及引入外部scss文件
Apr 14 Vue.js
vue特效之翻牌动画
Apr 20 Vue.js
vue el-upload上传文件的示例代码
Dec 21 #Vue.js
vue 在单页面应用里使用二级套嵌路由
Dec 19 #Vue.js
vue中如何添加百度统计代码
Dec 19 #Vue.js
vue 导航守卫和axios拦截器有哪些区别
Dec 19 #Vue.js
Vue——解决报错 Computed property &quot;****&quot; was assigned to but it has no setter.
Dec 19 #Vue.js
Vue实现手机号、验证码登录(60s禁用倒计时)
Dec 19 #Vue.js
Vue——前端生成二维码的示例
Dec 19 #Vue.js
You might like
Can't create/write to file 'C:\WINDOWS\TEMP\...MYSQL报错解决方法
2011/06/30 PHP
php抽象类使用要点与注意事项分析
2015/02/09 PHP
php返回字符串中所有单词的方法
2015/03/09 PHP
php将从数据库中获得的数据转换成json格式并输出的方法
2018/08/21 PHP
php DES加密算法实例分析
2019/09/18 PHP
laravel框架中路由设置,路由参数和路由命名实例分析
2019/11/23 PHP
PHP设计模式入门之状态模式原理与实现方法分析
2020/04/26 PHP
jquery uaMatch源代码
2011/02/14 Javascript
javascript预加载图片、css、js的方法示例介绍
2013/10/14 Javascript
JS实现模仿微博发布效果实例代码
2013/12/16 Javascript
jQuery中对未来的元素绑定事件用bind、live or on
2014/04/17 Javascript
jQuery解决input超多的表单提交
2015/08/10 Javascript
js获取地址栏中传递的参数(两种方法)
2017/02/08 Javascript
微信小程序实战之自定义抽屉菜单(7)
2017/04/18 Javascript
vue.js移动端tab组件的封装实践实例
2017/06/30 Javascript
基于JavaScript实现带数据验证和复选框的表单提交
2017/08/23 Javascript
详解AngularJS1.x学习directive 中‘&amp; ’‘=’ ‘@’符号的区别使用
2017/08/23 Javascript
微信小程序使用wxParse解析html的方法教程
2018/07/06 Javascript
vue实现动态显示与隐藏底部导航的方法分析
2019/02/11 Javascript
在Vue中使用antv的示例代码
2020/06/29 Javascript
使用vue实现通过变量动态拼接url
2020/07/22 Javascript
vue style width a href动态拼接问题的解决
2020/08/07 Javascript
Python使用gensim计算文档相似性
2016/04/10 Python
Python递归函数 二分查找算法实现解析
2019/08/12 Python
Python中BeautifuSoup库的用法使用详解
2019/11/15 Python
基于打开pycharm有带图片md文件卡死问题的解决
2020/04/24 Python
jupyter notebook运行命令显示[*](解决办法)
2020/05/18 Python
Tensorflow中k.gradients()和tf.stop_gradient()用法说明
2020/06/10 Python
英国床垫在线:Mattress Online
2016/12/07 全球购物
高三英语教学反思
2014/01/13 职场文书
工伤事故赔偿协议书
2015/08/06 职场文书
教师教育心得体会
2016/01/19 职场文书
离婚协议书范本(2016最新版)
2016/03/18 职场文书
Python爬虫之用Xpath获取关键标签实现自动评论盖楼抽奖(二)
2021/06/07 Python
Python爬虫入门案例之爬取去哪儿旅游景点攻略以及可视化分析
2021/10/16 Python
Python OpenCV超详细讲解调整大小与图像操作的实现
2022/04/02 Python