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 Event学习第二章 Event浏览器兼容性
Feb 07 Javascript
javascript基于HTML5 canvas制作画箭头组件
Jun 25 Javascript
Jquery元素追加和删除的实现方法
May 24 Javascript
Kindeditor单独调用多图上传实例
Jul 31 Javascript
详解react-webpack2-热模块替换[HMR]
Aug 03 Javascript
详解基于vue-cli优化的webpack配置
Nov 06 Javascript
jquery 给动态生成的标签绑定事件的几种方法总结
Feb 24 jQuery
解决vue2.0路由跳转未匹配相应用路由避免出现空白页面的问题
Aug 24 Javascript
angularjs获取到My97DatePicker选中的值方法
Oct 02 Javascript
vue数据操作之点击事件实现num加减功能示例
Jan 19 Javascript
vue发送websocket请求和http post请求的实例代码
Jul 11 Javascript
Vue通过for循环随机生成不同的颜色或随机数的实例
Nov 09 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中session过期时间设置及session回收机制介绍
2014/05/05 PHP
PHP中ini_set与ini_get用法实例
2014/11/04 PHP
php gd等比例缩放压缩图片函数
2016/06/12 PHP
PHP获取对象属性的三种方法实例分析
2019/01/03 PHP
javascrip关于继承的小例子
2013/05/10 Javascript
原生js实现半透明遮罩层效果具体代码
2013/06/06 Javascript
js控制frameSet示例
2013/09/10 Javascript
JS获取客户端IP地址、MAC和主机名的7个方法汇总
2014/07/21 Javascript
用循环或if语句从json中取数据示例
2014/08/18 Javascript
完美兼容IE,chrome,ff的设为首页、加入收藏及保存到桌面js代码
2014/12/17 Javascript
JavaScript中String.prototype用法实例
2015/05/20 Javascript
理解Javascript的call、apply
2015/12/16 Javascript
Ajax实现不刷新取最新商品
2017/03/01 Javascript
Vue Ajax跨域请求实例详解
2017/06/20 Javascript
jQuery选取所有复选框被选中的值并用Ajax异步提交数据的实例
2017/08/04 jQuery
vue实现的微信机器人聊天功能案例【附源码下载】
2019/02/18 Javascript
vue实现移动端H5数字键盘组件使用详解
2020/08/25 Javascript
vue实现拖拽进度条
2021/03/01 Vue.js
python自动化测试实例解析
2014/09/28 Python
Python通过DOM和SAX方式解析XML的应用实例分享
2015/11/16 Python
Python用list或dict字段模式读取文件的方法
2017/01/10 Python
Python实现读取字符串按列分配后按行输出示例
2018/04/17 Python
python 字典修改键(key)的几种方法
2018/08/10 Python
Python列表list排列组合操作示例
2018/12/18 Python
python 弹窗提示警告框MessageBox的实例
2019/06/18 Python
python监控进程状态,记录重启时间及进程号的实例
2019/07/15 Python
Django框架之DRF 基于mixins来封装的视图详解
2019/07/23 Python
Python Flask异步发送邮件实现方法解析
2020/08/01 Python
python matplotlib工具栏源码探析三之添加、删除自定义工具项的案例详解
2021/02/25 Python
一款恶搞头像特效的制作过程 利用css3和jquery
2014/11/21 HTML / CSS
基于HTML5+Webkit实现树叶飘落动画
2017/12/28 HTML / CSS
教育学专业毕业生的自我评价
2013/11/21 职场文书
机电职业生涯规划书范文
2014/03/08 职场文书
2014年度思想工作总结
2014/11/27 职场文书
2016大学军训通讯稿
2015/11/25 职场文书
清空 Oracle 安装记录并重新安装
2022/04/26 Oracle