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 相关文章推荐
use jscript Create a SQL Server database
Jun 16 Javascript
js模拟点击事件实现代码
Nov 06 Javascript
关于js数组去重的问题小结
Jan 24 Javascript
jQuery中andSelf()方法用法实例
Jan 08 Javascript
javascript实现十秒钟后注册按钮可点击的方法
May 13 Javascript
bootstrap select插件封装成Vue2.0组件
Apr 17 Javascript
JavaScript重复元素处理方法分析【统计个数、计算、去重复等】
Dec 14 Javascript
vue2.0安装style/css loader的方法
Mar 14 Javascript
Webpack 4.x搭建react开发环境的方法步骤
Aug 15 Javascript
让mocha支持ES6模块的方法实现
Jan 14 Javascript
JavaScript获取时区实现过程解析
Sep 24 Javascript
Vue项目中如何封装axios(统一管理http请求)
May 02 Vue.js
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实现的简单日历类
2014/11/29 PHP
PHP实现图的邻接矩阵表示及几种简单遍历算法分析
2017/11/24 PHP
javascript两段代码,两个小技巧
2010/02/04 Javascript
JavaScript ( (__ = !$ + $)[+$] + ({} + $)[_/_] +({} + $)[_/_] )
2011/02/25 Javascript
通过正则表达式实现表单验证是否为中文
2014/02/18 Javascript
javascript实现html页面之间参数传递的四种方法实例分析
2015/12/15 Javascript
JavaScript组件开发完整示例
2015/12/15 Javascript
基于JSON格式数据的简单jQuery幻灯片插件(jquery-slider)
2016/08/10 Javascript
Jquery通过ajax请求NodeJS返回json数据实例
2016/11/08 NodeJs
AngulerJS学习之按需动态加载文件
2017/02/13 Javascript
Node.js环境下Koa2添加travis ci持续集成工具的方法
2017/06/19 Javascript
JS简单生成由字母数字组合随机字符串示例
2018/05/25 Javascript
讲解vue-router之什么是编程式路由
2018/05/28 Javascript
vue项目中实现缓存的最佳方案详解
2019/07/11 Javascript
Vue+element-ui添加自定义右键菜单的方法示例
2020/12/08 Vue.js
Python中的Classes和Metaclasses详解
2015/04/02 Python
python数据结构之链表详解
2017/09/12 Python
Python反射的用法实例分析
2018/02/11 Python
Python读取excel指定列生成指定sql脚本的方法
2018/11/28 Python
使用Python发现隐藏的wifi
2020/03/04 Python
Anaconda配置pytorch-gpu虚拟环境的图文教程
2020/04/16 Python
利用django创建一个简易的博客网站的示例
2020/09/29 Python
Python 字典一个键对应多个值的方法
2020/09/29 Python
HTML5拍照和摄像机功能实战详解
2019/01/24 HTML / CSS
英国性感内衣和睡衣品牌:Bluebella
2018/01/26 全球购物
荷兰演唱会和体育比赛订票网站:viagogo荷兰
2018/04/08 全球购物
可口可乐唇膏:Lip Smackers
2019/08/27 全球购物
凌阳科技股份有限公司C++程序员面试题笔试题
2014/11/20 面试题
介绍一下Python中webbrowser的用法
2013/05/07 面试题
咖啡厅创业计划书范本
2014/01/22 职场文书
服务口号大全
2014/06/11 职场文书
活动总结书怎么写
2015/05/11 职场文书
贫困生证明范文
2015/06/16 职场文书
公司劳动纪律管理制度
2015/08/04 职场文书
教师旷工检讨书
2015/08/15 职场文书
Python实战之疫苗研发情况可视化
2021/05/18 Python