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 相关文章推荐
Js从头学起(基本数据类型和引用类型的参数传递详细分析)
Feb 16 Javascript
js中小数转换整数的方法
Jan 26 Javascript
js操作输入框中选择内容兼容IE及其他主流浏览器
Apr 22 Javascript
jQuery实现移动 和 渐变特效的点击事件
Feb 26 Javascript
jQuery实现精美的多级下拉菜单特效
Mar 14 Javascript
JavaScript中函数(Function)的apply与call理解
Jul 08 Javascript
jquery.cookie实现的客户端购物车操作实例
Dec 24 Javascript
Vue.js学习示例分享
Feb 05 Javascript
js实现带进度条提示的多视频上传功能
Dec 13 Javascript
javascript编程开发中取色器及封装$函数用法示例
Aug 09 Javascript
微信小程序使用二次贝塞尔曲线画波浪
Dec 25 Javascript
原生JavaScript实现简单五子棋游戏
Jun 28 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的Yii框架中Model模型的学习教程
2016/03/29 PHP
调试php程序的简单步骤
2019/10/04 PHP
php与阿里云短信接口接入操作案例分析
2020/05/27 PHP
THREE.JS入门教程(5)你应当知道的十件事
2013/01/24 Javascript
js一般方法改写成面向对象方法的无限级折叠菜单示例代码
2013/07/04 Javascript
使用jQuery插件创建常规模态窗口登陆效果
2013/08/23 Javascript
JQuery 在线引用及测试引用是否成功
2014/06/24 Javascript
为什么Node.js会这么火呢?Node.js流行的原因
2014/12/01 Javascript
jquery中添加属性和删除属性
2015/06/03 Javascript
JavaScript实现表格快速变色效果代码
2015/08/19 Javascript
Vue开发过程中遇到的疑惑知识点总结
2017/01/20 Javascript
jQuery插件zTree实现获取一级节点数据的方法
2017/03/08 Javascript
微信小程序 flex实现导航实例详解
2017/04/26 Javascript
react-redux中connect()方法详细解析
2017/05/27 Javascript
浅析Angular19 自定义表单控件
2018/01/31 Javascript
深入分析element ScrollBar滚动组件源码
2019/01/22 Javascript
Angular8路由守卫原理和使用方法
2019/08/29 Javascript
[05:31]DOTA2英雄梦之声_第04期_光之守卫
2014/06/23 DOTA
使用python开发vim插件及心得分享
2014/11/04 Python
python搜索指定目录的方法
2015/04/29 Python
如何使用python爬取csdn博客访问量
2016/02/14 Python
分分钟入门python语言
2018/03/20 Python
Python统计一个字符串中每个字符出现了多少次的方法【字符串转换为列表再统计】
2019/05/05 Python
Python中字符串List按照长度排序
2019/07/01 Python
python base64库给用户名或密码加密的流程
2020/01/02 Python
详解pandas绘制矩阵散点图(scatter_matrix)的方法
2020/04/23 Python
新加坡领先的时尚生活方式零售品牌:CHARLES & KEITH
2018/01/16 全球购物
伦敦一家西班牙童装精品店:La Coqueta
2018/02/02 全球购物
Sunglasses Shop瑞典:欧洲领先的太阳镜网上商店
2018/04/22 全球购物
什么是Smarty变量操作符?如何使用Smarty变量操作符
2014/07/18 面试题
优秀护士先进事迹
2014/05/08 职场文书
企业宣传口号
2014/06/12 职场文书
飞越疯人院观后感
2015/06/09 职场文书
Python实现拼音转换
2021/06/07 Python
Python实现灰色关联分析与结果可视化的详细代码
2022/03/25 Python
Python列表的索引与切片
2022/04/07 Python