vue滚动tab跟随切换效果


Posted in Javascript onJune 29, 2020

分享一个我前几天做的移动端 tab滚动跟随的例子

vue滚动tab跟随切换效果

随着滚动条的滚动,tab会对应进行切换

首先我们需要监听当前页面的滚动

mounted(){
 //记录每个内容对用的dom数组
 this.arrDom = document.getElementsByClassName("item-content");
 window.addEventListener('scroll', this.handleScroll);
 },
 
 destroyed(){
 window.removeEventListener('scroll', this.handleScroll);
 },

我们的tab列表可以在data里面进行自定义数组:

tabList:[{
 id:1,
 name:'详情'
 },{
 id:2,
 name:'评论'
 },{
 id:3,
 name:'新闻'
 },{
 id:4,
 name:'关于'
 },{
 id:5,
 name:'相关'
 }],

然后我们在dom里面对应渲染tab列表和对应内容,内容可以直接关联到tablist的item中的一个字段,也可以分开写

<nav :class="headerFixed?'tabFixed tablist':'tablist'" id='tab'>
 <div @click='handleSelectTab(item.id)' :class="active==item.id?'tab-item tab-active':'tab-item'" v-for='item in tabList' :key='item.id'>{{item.name}}</div>
</nav>
<div class="item-content">
 <div>11111111</div>
</div>
<div class="item-content">
 <div>22222</div>
</div>
<div class="item-content">
 <div>33333</div>
</div>
<div class="item-content">
 <div>44444</div>
</div>
<div class="item-content">
 <div>555555</div>
</div>

然后就是我们的js部分了

handleScroll(){
 let scrollTop = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop;
 this.headerFixed = scrollTop > this.offsetTop;
 for (let i = 0; i < this.arrDom.length; i++) {
  //因为下面使用到了i+1,所以需要把最后一个分离出来判断
 if(this.arrDom[this.arrDom.length-1].offsetTop-scrollTop>80){
  if(this.arrDom[i].offsetTop-scrollTop<=80&&this.arrDom[i+1].offsetTop-scrollTop>80){
  this.active = i+1
  }
 }else{
  this.active = this.arrDom.length;
 }
 
 }
 },

然后就成功完成了我们的效果!

关于vue.js组件的教程,请大家点击专题vue.js组件学习教程进行学习。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
另类调用flash无须激活的方法
Dec 27 Javascript
zeroclipboard复制到剪切板的flash
Aug 04 Javascript
javascript动态添加、修改、删除对象的属性与方法详解
Jan 27 Javascript
jQery使网页在显示器上居中显示适用于任何分辨率
Jun 09 Javascript
基于Jquery制作图片文字排版预览效果附源码下载
Nov 18 Javascript
JavaScript必知必会(三) String .的方法来自何方
Jun 08 Javascript
JavaScript将base64图片转换成formData并通过AJAX提交的实现方法
Oct 24 Javascript
微信小程序 toast 详解及实例代码
Nov 09 Javascript
JS实现颜色梯度与渐变效果完整实例
Dec 30 Javascript
Vue 2.0中生命周期与钩子函数的一些理解
May 09 Javascript
Android 自定义view仿微信相机单击拍照长按录视频按钮
Jul 19 Javascript
vue项目中使用rem,在入口文件添加内容操作
Nov 11 Javascript
Vue.js实现tab切换效果
Jul 24 #Javascript
javascript面向对象三大特征之多态实例详解
Jul 24 #Javascript
javascript面向对象三大特征之继承实例详解
Jul 24 #Javascript
Vue.js组件实现选项卡以及切换特效
Jul 24 #Javascript
javascript中call,apply,callee,caller用法实例分析
Jul 24 #Javascript
javascript关于“时间”的一次探索
Jul 24 #Javascript
javascript面向对象三大特征之封装实例详解
Jul 24 #Javascript
You might like
如何在PHP程序中防止盗链
2008/04/09 PHP
php正则表达式使用的详细介绍
2013/04/27 PHP
php实现window平台的checkdnsrr函数
2015/05/27 PHP
在Laravel 中实现是否关注的示例
2019/10/22 PHP
用JavaScript对JSON进行模式匹配(Part 1-设计)
2010/07/17 Javascript
jquery 延迟执行实例介绍
2013/08/20 Javascript
JQuery判断子iframe何时加载完成解决方案
2013/08/20 Javascript
自动设置iframe大小的jQuery代码
2013/09/11 Javascript
JS中判断null、undefined与NaN的方法
2014/03/26 Javascript
代码获取历史上的今天发生的事
2014/04/11 Javascript
jQuery简单图表peity.js使用示例
2014/05/02 Javascript
js函数调用的方式
2014/05/06 Javascript
JS非Alert实现网页右下角“未读信息”效果弹窗
2015/09/26 Javascript
jQuery中常用动画效果函数知识点整理
2018/08/19 jQuery
详解在Angular4中使用ng2-baidu-map的方法
2019/06/19 Javascript
[00:12]2018DOTA2亚洲邀请赛 sylar表现SOLO技艺
2018/04/06 DOTA
python超简单解决约瑟夫环问题
2015/05/12 Python
深入浅析python中的多进程、多线程、协程
2016/06/22 Python
简单的python后台管理程序
2017/04/13 Python
Python confluent kafka客户端配置kerberos认证流程详解
2020/10/12 Python
Linux如何为某个操作添加别名
2015/02/05 面试题
Java程序员面试90题
2013/10/19 面试题
工程造价自荐信
2013/10/09 职场文书
小学生演讲稿
2014/01/12 职场文书
事业单位辞职信范文
2014/01/19 职场文书
优秀员工评语
2014/02/10 职场文书
学校安全责任书
2014/04/14 职场文书
学校节能减排倡议书
2014/05/16 职场文书
2014年人大工作总结
2014/12/10 职场文书
2015年教师节活动总结
2015/03/20 职场文书
建筑技术负责人岗位职责
2015/04/13 职场文书
党员志愿者服务倡议书
2015/04/29 职场文书
公司员工宿舍管理制度
2015/08/03 职场文书
Python利用folium实现地图可视化
2021/05/23 Python
Ajax异步刷新功能及简单案例
2021/11/20 Javascript
SQL Server携程核心系统无感迁移到MySQL实战
2022/06/01 SQL Server