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 相关文章推荐
[原创]静态页面也可以实现预览 列表不同的显示方式
Oct 14 Javascript
深入认识JavaScript中的函数
Jan 22 Javascript
jquery tablesorter.js 支持中文表格排序改进
Dec 09 Javascript
jquery下checked取值问题的解决方法
Aug 09 Javascript
jQuery中addClass()方法用法实例
Jan 05 Javascript
javascript数据结构之二叉搜索树实现方法
Nov 25 Javascript
jQuery文本框得到与失去焦点动态改变样式效果
Sep 08 Javascript
使用Vue的slot插槽分发父组件内容实现高度复用、更加灵活的组件(推荐)
May 01 Javascript
跟混乱的页面弹窗说再见
Apr 11 Javascript
详解keep-alive + vuex 让缓存的页面灵活起来
Apr 19 Javascript
微信小程序自定义可滑动顶部TabBar选项卡实现页面切换功能示例
May 14 Javascript
vue模块移动组件的实现示例
May 20 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项目中比较通用的php自建函数的详解
2013/06/06 PHP
神盾加密解密教程(二)PHP 神盾解密
2014/06/08 PHP
PHP针对多用户实现更换头像功能
2016/09/04 PHP
Laravel中Facade的加载过程与原理详解
2017/09/22 PHP
prototype Element学习笔记(篇一)
2008/10/26 Javascript
javascript实现面向对象类的功能书写技巧
2010/03/07 Javascript
数组方法解决JS字符串连接性能问题有争议
2011/01/12 Javascript
最短的javascript:地址栏载入脚本代码
2011/10/13 Javascript
JavaScript闭包 懂不懂由你反正我是懂了
2011/10/21 Javascript
利用jquery操作Radio方法小结
2014/10/20 Javascript
JS实现光滑展开合拢的菜单效果代码
2015/09/16 Javascript
使用Jasmine和Karma对AngularJS页面程序进行测试
2016/03/05 Javascript
jquery按回车键实现表单提交的简单实例
2016/05/25 Javascript
js点击任意区域弹出层消失实现代码
2016/12/27 Javascript
jQuery插件zTree实现的多选树效果示例
2017/03/08 Javascript
vue中的计算属性的使用和vue实例的方法示例
2017/12/04 Javascript
浅谈Vue CLI 3结合Lerna进行UI框架设计
2019/04/14 Javascript
通过实例了解JS 连续赋值
2019/09/24 Javascript
推荐几个不错的console调试技巧实现
2019/12/20 Javascript
如何解决vue在ios微信&quot;复制链接&quot;功能问题
2020/03/26 Javascript
在react项目中使用antd的form组件,动态设置input框的值
2020/10/24 Javascript
浅谈Python中数据解析
2015/05/05 Python
磁盘垃圾文件清理器python代码实现
2020/08/24 Python
Python使用requests提交HTTP表单的方法
2018/12/26 Python
python采集百度搜索结果带有特定URL的链接代码实例
2019/08/30 Python
使用Django搭建一个基金模拟交易系统教程
2019/11/18 Python
pandas实现DataFrame显示最大行列,不省略显示实例
2019/12/26 Python
CSS3 Notes: -webkit-box-reflect实现倒影的实例
2016/12/08 HTML / CSS
为世界各地的女性设计和生产时尚服装:ROMWE
2016/09/17 全球购物
售后专员岗位职责
2013/12/08 职场文书
寒假实习自荐信
2014/01/26 职场文书
项目建议书怎么写
2014/05/15 职场文书
党课心得体会范文
2014/09/09 职场文书
公司年夜饭通知
2015/04/25 职场文书
工程服务质量承诺书
2015/04/29 职场文书
PHP中strval()函数实例用法
2021/06/07 PHP