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中使用Echarts可视化库的完整步骤记录
Nov 18 Vue.js
基于vue项目设置resolves.alias: '@'路径并适配webstorm
Dec 02 Vue.js
vue+element实现动态加载表单
Dec 13 Vue.js
Vue通过阿里云oss的url连接直接下载文件并修改文件名的方法
Dec 25 Vue.js
Vue页面渲染中key的应用实例教程
Jan 12 Vue.js
vue实现按钮切换图片
Jan 20 Vue.js
vue form表单post请求结合Servlet实现文件上传功能
Jan 22 Vue.js
Vue 3自定义指令开发的相关总结
Jan 29 Vue.js
Vue 实例中使用$refs的注意事项
Jan 29 Vue.js
vue使用v-model进行跨组件绑定的基本实现方法
Apr 28 Vue.js
vue+iview实现手机号分段输入框
Mar 25 Vue.js
vue整合百度地图显示指定地点信息
Apr 06 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
PHP的FTP学习(三)
2006/10/09 PHP
php站内搜索并高亮显示关键字的实现代码
2011/12/29 PHP
解析php函数method_exists()与is_callable()的区别
2013/06/21 PHP
将word转化为swf 如同百度文库般阅读实现思路及代码
2013/08/09 PHP
php 批量添加多行文本框textarea一行一个
2014/06/03 PHP
php实现将Session写入数据库
2015/07/26 PHP
深入解析PHP的Yii框架中的event事件机制
2016/03/17 PHP
php分享朋友圈的实现代码
2019/02/18 PHP
jquery ajax修改全局变量示例代码
2013/11/08 Javascript
JavaScript中使用Callback控制流程介绍
2015/03/16 Javascript
基于jQuery滑动杆实现购买日期选择效果
2015/09/15 Javascript
jQuery使用contains过滤器实现精确匹配方法详解
2016/02/25 Javascript
对象转换为原始值的实现方法
2016/06/06 Javascript
关于vue.js弹窗组件的知识点总结
2016/09/11 Javascript
浅析Angular2子模块以及异步加载
2017/04/24 Javascript
JS实现DOM节点插入操作之子节点与兄弟节点插入操作示例
2018/07/30 Javascript
详解vue指令与$nextTick 操作DOM的不同之处
2018/08/02 Javascript
使用js实现一个简单的滚动条过程解析
2019/09/10 Javascript
javascript异常处理实现原理详解
2020/02/17 Javascript
Vue中添加滚动事件设置的方法详解
2020/09/14 Javascript
老生常谈Python startswith()函数与endswith函数
2017/09/08 Python
单利模式及python实现方式详解
2018/03/20 Python
Python加载数据的5种不同方式(收藏)
2020/11/13 Python
解决python3输入的坑——input()
2020/12/05 Python
世界上最大的网络主机公司:1&1
2016/10/12 全球购物
附答案的Java面试题
2012/11/19 面试题
Ruby如何实现动态方法调用
2012/11/18 面试题
电气自动化大学生求职信
2013/10/16 职场文书
门前三包责任书
2014/04/15 职场文书
迎国庆横幅标语
2014/10/08 职场文书
2014年社区教育工作总结
2014/12/02 职场文书
检讨书范文1000字
2015/01/28 职场文书
单位接收函范文
2015/01/30 职场文书
工程技术员岗位职责
2015/04/11 职场文书
高中军训感想
2015/08/07 职场文书
JS前端可视化canvas动画原理及其推导实现
2022/08/05 Javascript