实现导航条的滚动与对应页面的跳转

在这里插入图片描述
要实现的功能是导航条的滚动,我如果是首行的话,向左滚动显示灰色,如果不是首行,向左滚动不显示灰色。向右滚动同样的道理。另外,要实现的是我导航滚动到最右边会自动跳转到下一页,我滚动到最左边会自动跳转到上一页。就这样简简单单的功能,我太菜了!!!
首先,要首先点击右图标会跳转下一页。点击左图标会跳转上一页。那这个功能又是怎么一个思路。想了好久。。。。。
新建一个数组,一点击的时候重新构造一个新的数组。
在这里插入图片描述
首先,我们得先初始化index 和新的数组

data(){ return { index:0, newList:[] } }
接着,就首先向左向右点击

methods:{
//向左滚动
 onBeforenavClick() {
 this.index=this.index-5
 this.newList=[]
 for(var i=this.index;i<topList.length;i++)//topList是原数组
 this.newList.push(this.topList[i])
 }
 //向右滚动
 onAfterClick(){
 this.index=this.index+5
 this.newList=[]
 for(var i=this.index;i<topList.length;i++)//topList是原数组
 this.newList.push(this.topList[i])
 }
}

实现了向右向左点击的效果,但要实现满足条件才能实现跳转,不满足条件的话图标显示灰色

我满足条件图标不显示灰色,我不满足条件显示灰色。那一个图标什么时候添加一个类样式
一个不够就定义两个。

<i v-if=" index>0" class="el-icon-d-arrow-left top-i" @click="onBeforenavClick()"></i>
      <i v-else class="el-icon-d-arrow-left top-i green"></i>
      <i v-if="topTypeList.length>5 &&index+5<topTypeList.length" class="el-icon-d-arrow-right top-i  " @click="onAfternavClick()"></i>
      <i v-else class="el-icon-d-arrow-right top-i green "></i>

这样的话大致就差不多完成了,那我的leader又说,不行,你还需要做的是导航条滚动下面对应的内容,滚动到下一页的时候会自动跳转到下一页。滚到上一页的时候自动跳转到上一页。那这样的话,好,收到,实习生太难了,我太菜了!!!!
他每一个index对应的内容都有唯一的clickType
那这样的话,要是他移动到index为5的时候,执行onAfternavClick()函数。初步想的是这样的,那就开始做

update:{
  if (this.newList.length > 5 && this.clickType === this.newList[5].type) {
    this.onAfternavClick()
    console.log('3333')
  }
  }

刚开始撸了这个,想可以右移动了,那我左移动也应该可以了,有点开心!!!
可是可是,不是,这样做有bug。我在更新的时候执行,导致我移动到index为5的时候,无法再点击事件。
第二个,向左滚动跟向右滚动会有冲突的点。这个方法不行!!

那怎么办,再想。最后

watch:{
clickType(nVal,oval)
if(!clickType){
return 
}
//在最上面的那个数组,你会发现,向左点击的时候,数组会完全发现变化
if(!this.newList.find(x=>x.type===nVal)//x.type=clickType
{
this.onBeforenavClick()
}
else if(this.newList.findIndex(x=>x.type===nVal)>5){
this.onAfternavClick()
}
}

最后可以了!!!!还需更要好好学习,在学习的路上~

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值