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 相关文章推荐
JavaScript实际应用:innerHTMl和确认提示的使用
Jun 22 Javascript
AngularJS初始化静态模板详解
Jan 14 Javascript
bootstrap vue.js实现tab效果
Feb 07 Javascript
js中toString()和String()区别详解
Mar 23 Javascript
JavaScript在控件上添加倒计时功能的实现代码
Jul 04 Javascript
基于vue-cli配置lib-flexible + rem实现移动端自适应
Dec 26 Javascript
12条写出高质量JS代码的方法
Jan 07 Javascript
vue项目在安卓低版本机显示空白的原因分析(两种)
Sep 04 Javascript
js异步上传多张图片插件的使用方法
Oct 22 Javascript
生产制造追溯系统之在线打印功能
Jun 03 Javascript
bootstrap datepicker的基本使用教程
Jul 09 Javascript
浅谈Vue.set实际上是什么
Oct 17 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
ThinkPHP3.1新特性之多层MVC的支持
2014/06/19 PHP
Laravel 添加多语言提示信息的方法
2019/09/29 PHP
css值转换成数值请抛弃parseInt
2011/10/24 Javascript
Jquery上传插件 uploadify v3.1使用说明
2012/06/18 Javascript
jquery 触发a链接点击事件解决方案
2013/05/02 Javascript
JS简单实现文件上传实例代码(无需插件)
2013/11/15 Javascript
JS或jQuery获取ASP.NET服务器控件ID的方法
2015/06/08 Javascript
基于javascript实现句子翻牌网页版小游戏
2016/03/23 Javascript
jQuery实现立体式数字动态增加(animate方法)
2016/12/21 Javascript
Javascript中的神器——Promise
2017/02/08 Javascript
nodejs入门教程五:连接数据库的方法分析
2017/04/24 NodeJs
解决vue 按钮多次点击重复提交数据问题
2018/05/10 Javascript
js 将线性数据转为树形的示例代码
2019/05/28 Javascript
vue-cli基础配置及webpack配置修改的完整步骤
2019/10/20 Javascript
vue深度监听(监听对象和数组的改变)与立即执行监听实例
2020/09/04 Javascript
ant design 日期格式化的实现
2020/10/27 Javascript
js实现简易点击切换显示或隐藏
2020/11/29 Javascript
python 字典(dict)遍历的四种方法性能测试报告
2014/06/25 Python
盘点提高 Python 代码效率的方法
2014/07/03 Python
python新手经常遇到的17个错误分析
2014/07/30 Python
Python文件操作,open读写文件,追加文本内容实例
2016/12/14 Python
Python接口测试文件上传实例解析
2020/05/22 Python
在python中使用pyspark读写Hive数据操作
2020/06/06 Python
python 两种方法修改文件的创建时间、修改时间、访问时间
2020/09/26 Python
css3实现的多级渐变下拉菜单导航效果代码
2015/08/31 HTML / CSS
使用HTML5加载音频和视频的实现代码
2020/11/30 HTML / CSS
物流专业大学生求职信范文
2013/10/28 职场文书
怀念母亲教学反思
2014/04/28 职场文书
电子信息工程自荐信
2014/05/26 职场文书
化学专业自荐信
2014/05/28 职场文书
单位实习鉴定评语
2015/01/04 职场文书
创先争优活动个人总结
2015/03/04 职场文书
清洁工个人工作总结
2015/03/05 职场文书
SQL Server 数据库实验课第五周——常用查询条件
2021/04/05 SQL Server
jQuery ajax - getScript() 方法和getJSON方法
2021/05/14 jQuery
Vue3.0中Ref与Reactive的区别示例详析
2021/07/07 Vue.js