【给Swiper轮播时添加动画过渡效果】

给Swiper轮播时添加动画过渡效果

需求

轮播时添加一个图片逐渐缩小,透明度逐渐降低的过渡效果

事件

给Swiper添加

//右滑动作
@slide-next-transition-start="($event) => NextTransionStart($event)"
//左滑动作
@slide-prev-transition-start="($event) => PrevTransionStart($event)"
//触摸图片
@touch-move="touchmove"
//手指离开图片
@touch-end="touchend"

//不用驼峰是因为代码检查过不去
//触摸动作是在不通过按钮进行轮播时触发的

按钮滑动事件

// 右滑
const NextTransionStart = (swiper) => {
  //获取当前图片,并缩小
  let endimg = swiper.slides[swiper.previousIndex].querySelector('img')
  endimg.style.opacity = 0;
  endimg.style.transform = 'scale(0.4)';
  endimg.style.transition = 'opacity 0.2s ease, transform 0.2s ease'
  //获取马上要滑动到的图片,并将他提前快速缩小.
  let starimg = swiper.slides[swiper.activeIndex].querySelector('img')
  starimg.style.opacity = 0;
  starimg.style.transform = 'scale(0.4)';
  starimg.style.transition = 'opacity 0.01s ease, transform 0.01s ease'

  //快速缩小之后,在缓慢的放大
  setTimeout(function(){
	starimg.style.opacity = 1;
    starimg.style.transform = 'scale(1)';
    starimg.style.transition = 'opacity 2s ease, transform 2s ease'
  },10)
}
//左滑也一样    复制一份就行
const PrevTransionStart = (swiper) => {
  //获取当前图片,并缩小
  let endimg = swiper.slides[swiper.previousIndex].querySelector('img')
  endimg.style.opacity = 0;
  endimg.style.transform = 'scale(0.4)';
  endimg.style.transition = 'opacity 0.2s ease, transform 0.2s ease'
  //获取马上要滑动到的图片,并将他提前快速缩小.
  let starimg = swiper.slides[swiper.activeIndex].querySelector('img')
  starimg.style.opacity = 0;
  starimg.style.transform = 'scale(0.4)';
  starimg.style.transition = 'opacity 0.01s ease, transform 0.01s ease'

  //快速缩小之后,在缓慢的放大
  setTimeout(function(){
	starimg.style.opacity = 1;
    starimg.style.transform = 'scale(1)';
    starimg.style.transition = 'opacity 2s ease, transform 2s ease'
  },10)
}

手动滑动事件

// 手指摁下
const touchmove = (event) => {
  let cx = event.touches.currentX;
  let sx = event.touches.startX;
  //滑动缩放倍率,可以根据自己情况调整
  let opacitynum = ((cx - sx)/2/188).toFixed(2)
  let scalenum = ((cx - sx)/2/130).toFixed(2)
  
  //展示动画
  let starimg = swiper.slides[swiper.activeIndex].querySelector('img')
  starimg.style.opacity = opacitynum ;
  starimg.style.transform = 'scale('+scalenum +')';
  starimg.style.transition = 'opacity 1s ease, transform 1s ease'
}

//手指松开
const touchend = (event) => {  
  //展示动画
  let starimg = swiper.slides[swiper.activeIndex].querySelector('img')
  starimg.style.opacity = 1;
  starimg.style.transform = 'scale(1)';
  starimg.style.transition = 'opacity 1s ease, transform 1s ease'
}

*转载请注明出处

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值