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 18 Vue.js
用vue设计一个日历表
Dec 03 Vue.js
vue 通过base64实现图片下载功能
Dec 19 Vue.js
如何在vue-cli中使用css-loader实现css module
Jan 07 Vue.js
vue 递归组件的简单使用示例
Jan 14 Vue.js
详解vite+ts快速搭建vue3项目以及介绍相关特性
Feb 25 Vue.js
vue-cli中实现响应式布局的方法
Mar 02 Vue.js
vue项目实现分页效果
Mar 24 Vue.js
Vue Element-ui表单校验规则实现
Jul 09 Vue.js
使用vuex-persistedstate本地存储vuex
Apr 29 Vue.js
vue实现在data里引入相对路径
Jun 05 Vue.js
vue本地构建热更新卡顿的问题“75 advanced module optimization”完美解决方案
Aug 05 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
Laravel中10个有用的用法小结
2019/05/06 PHP
jQuery实现点击按钮弹出可关闭层的浮动层插件
2015/09/19 Javascript
JS实现网页Div层Clone拖拽效果
2015/09/26 Javascript
js中substr,substring,indexOf,lastIndexOf,split,replace的用法详解
2015/11/09 Javascript
基于jQuery实现简单的折叠菜单效果
2015/11/23 Javascript
jQuery实现带分组数据的Table表头排序实例分析
2015/11/24 Javascript
js去字符串前后空格的实现方法
2016/02/26 Javascript
AngularJS 模型详细介绍及实例代码
2016/07/27 Javascript
Angularjs中controller的三种写法分享
2016/09/21 Javascript
jquery滚动条插件slimScroll使用方法
2017/02/09 Javascript
详解react服务端渲染(同构)的方法
2017/09/21 Javascript
angular6 填坑之sdk的方法
2018/12/27 Javascript
ES6 Object方法扩展的应用实例分析
2019/06/25 Javascript
vue 动态添加的路由页面刷新时失效的原因及解决方案
2021/02/26 Vue.js
Python脚本文件打包成可执行文件的方法
2015/06/02 Python
python查看微信好友是否删除自己
2016/12/19 Python
Python 结巴分词实现关键词抽取分析
2017/10/21 Python
python实现自主查询实时天气
2018/06/22 Python
Tensorflow实现酸奶销量预测分析
2019/07/19 Python
锐步美国官方网站:Reebok美国
2018/01/10 全球购物
澳大利亚领先的时尚内衣零售商:Bras N Things
2020/07/28 全球购物
对于没有初始化的变量的初始值可以作怎样的假定
2014/10/12 面试题
高三地理教学反思
2014/01/11 职场文书
学习雷锋精神心得体会范文
2014/03/12 职场文书
委托证明书
2014/09/17 职场文书
八项规定个人对照检查材料思想汇报
2014/09/25 职场文书
社区班子个人对照检查材料思想汇报
2014/10/07 职场文书
工作检讨书500字
2014/10/19 职场文书
钳工实训报告总结
2014/11/04 职场文书
2015年七夕情人节活动方案
2015/05/06 职场文书
道歉的话怎么说
2015/05/12 职场文书
用电申请报告范文
2015/05/18 职场文书
安全第一课观后感
2015/06/18 职场文书
观看禁毒宣传片后的感想
2015/08/11 职场文书
三好学生主要事迹材料
2015/11/03 职场文书
JavaScript继承的三种方法实例
2021/05/12 Javascript