3d位移轮播图

  const com = () => {

    let len = value.length;

    let temp1 = ins - 2;//ins默认是0,所以给到temp3,因为temp3是中间位置显示

    setp1(temp1)

    let temp2 = ins - 1;//-1就是中间靠左一的位置,到时候会根据这五个索引提供各自的动画位移

    setp2(temp2)

    let temp3 = ins;//

    setp3(temp3)

    let temp4 = ins + 1;//

    setp4(temp4)

    let temp5 = ins + 2;//

    setp5(temp5)

    if (temp1 < 0) {

      temp1 = len + temp1//当temp1小于零,则说明最左侧已经到头了,继续点击应该从数组末尾开始显示

      setp1(temp1)       //len(数组长度假设20)+temp1(假设目前-1)那就是显示数组的19位

    }

    if (temp2 < 0) {

      temp2 = len + temp2

      setp2(temp2)

    }

    if (temp4 >= len) {

      temp4 = temp4 - len

      setp4(temp4)

    }

    if (temp5 >= len) {

      temp5 = temp5 - len

      setp5(temp5)

    }

  }

设置好五个索引后,接下来我们控制索引给到数组,进行渲染,接下来只需要对ins这个中间索引进行++或者--就能实现左右切换了。

  value.map((item, index) => {
    if(item.onchainMetadata.data.creators[0].address != env.creator_id){
      return value.splice(index,1)//不等于则从数组中删除此项
    }else{
      let transform = `translate(-50%,-50%) scale(0.55)`;//这是除去要显示的五个之外的其他元素,让他藏在居中位置
      let zIndex = 0;
      switch (index) {//循环遍历得到所有index索引并switch筛选符合条件的,分别赋予动画
        case temp3:
          zIndex = 3;
          transform = `translate(-50%,-50%) scale(1)`;
          break;

        case temp1:
          zIndex = 1;
          transform = `translate(-235%,-50%) scale(0.7)`;
          break;

        case temp2:
          zIndex = 2;
          transform = `translate(-150%,-50%) scale(0.85)`;
          break;

        case temp4:
          zIndex = 2;
          transform = `translate(50%,-50%) scale(0.85)`;
          break;

        case temp5:
          zIndex = 1;
          transform = `translate(140%,-50%) scale(0.7)`;
          break;
      }
      item.sty = {
        transform,
        zIndex
      }
      return item
    }
  })

以下是简略版:

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值