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防抖与节流
Nov 24 Vue.js
详解Vue3 Teleport 的实践及原理
Dec 02 Vue.js
vue 实现基础组件的自动化全局注册
Dec 25 Vue.js
Vue看了就会的8个小技巧
Jan 21 Vue.js
如何在 Vue 表单中处理图片
Jan 26 Vue.js
聊聊vue 中的v-on参数问题
Jan 29 Vue.js
手动实现vue2.0的双向数据绑定原理详解
Feb 06 Vue.js
vue实现倒计时功能
Mar 24 Vue.js
Vue中插槽slot的使用方法与应用场景详析
Jun 08 Vue.js
vue项目proxyTable配置和部署服务器
Apr 14 Vue.js
Vue OpenLayer测距功能的实现
Apr 20 Vue.js
vue-treeselect的基本用法以及解决点击无法出现拉下菜单
Apr 30 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 中的面向对象编程:通向大型 PHP 工程的办法
2006/12/03 PHP
php操作sqlserver关于时间日期读取的小小见解
2009/11/29 PHP
ThinkPHP自动转义存储富文本编辑器内容导致读取出错的解决方法
2014/08/08 PHP
php提示Failed to write session data错误的解决方法
2014/12/17 PHP
PHP中使用php://input处理相同name值的表单数据
2015/02/03 PHP
通过PHP简单实例介绍文件上传
2015/12/16 PHP
php微信开发自定义菜单
2016/08/27 PHP
PHP中用Trait封装单例模式的实现
2019/12/18 PHP
BOOM vs RR BO3 第一场2.13
2021/03/10 DOTA
JavaScript 模拟用户单击事件
2009/12/31 Javascript
jquery.ajax的url中传递中文乱码问题的解决方法
2014/02/07 Javascript
javascript html5摇一摇功能的实现
2016/04/19 Javascript
js防阻塞加载的实现方法
2016/09/09 Javascript
HTML Table 空白单元格补全的简单实现
2016/10/13 Javascript
从零开始学习Node.js系列教程之设置HTTP头的方法示例
2017/04/13 Javascript
js基于FileSaver.js 浏览器导出Excel文件的示例
2017/08/15 Javascript
angular2路由切换改变页面title的示例代码
2017/08/23 Javascript
vue.js如何将echarts封装为组件一键使用详解
2017/10/10 Javascript
vue-cli中打包图片路径错误的解决方法
2017/10/26 Javascript
nodejs实现OAuth2.0授权服务认证
2017/12/27 NodeJs
深入理解requireJS-实现一个简单的模块加载器
2018/01/15 Javascript
微信小程序如何获取用户信息
2018/01/26 Javascript
AngularJS 将再发布一个重要版本 然后进入长期支持阶段
2018/01/31 Javascript
vue实现自定义多选与单选的答题功能
2018/07/05 Javascript
vue  elementUI 表单嵌套验证的实例代码
2019/11/06 Javascript
Python下的twisted框架入门指引
2015/04/15 Python
python+mysql实现教务管理系统
2019/02/20 Python
python对文件的操作方法汇总
2020/02/28 Python
python实现爱奇艺登陆密码RSA加密的方法示例详解
2020/05/27 Python
香港最新科技与优质家居产品购物网站:J SELECT
2018/08/21 全球购物
2014年审计工作总结
2014/11/17 职场文书
小学班主任工作总结2015
2015/04/07 职场文书
周恩来的四个昼夜观后感
2015/06/03 职场文书
庆七一晚会主持词
2015/06/30 职场文书
2015年信息技术教研组工作总结
2015/07/22 职场文书
《家》读后感:万惜拯救,冷暖自知
2019/09/25 职场文书