微信小程序仿胖东来轮播和背景效果(有效果图)

效果图

.wxml

复制代码
<view class="swiper-index" style="--width--:{{windowWidth}}px;">
  <image src="{{swiperList[(cardCur + bgIndex == -1?swiperList.length - 1:cardCur + bgIndex > swiperList.length -1?0:cardCur + bgIndex)]}}" class="swiper-bg" style="--filter--:blur({{(1 - radio) * 12}}px);"></image>
  <swiper class="card-swiper square-dot" indicator-dots="true" circular="{{true}}" autoplay="{{true}}" 
  style="--scale--:{{radio}};"
  interval="{{5000}}" duration="500"  indicator-color="#ffffff" indicator-active-color="#F2F2F2"
  bindtransition="cardSition" bindanimationfinish="cardFinish"
  data-windowWidth="{{windowWidth}}" data-bgindex="{{bgIndex}}">
    <swiper-item wx:for="{{swiperList}}" wx:key="index" class="{{cardCur==index?'cur':''}}">
      <view class="swiper-item">
        <image class="swiper-image" src="{{item}}"></image>
      </view>
    </swiper-item>
  </swiper>
</view>
<view style="background: #fff;height: 10px;"></view>

.js

复制代码
Page({
  data: {
    swiperList: [
      'https://ossweb-img.qq.com/images/lol/web201310/skin/big84000.jpg',
      'https://ossweb-img.qq.com/images/lol/web201310/skin/big84001.jpg',
      'https://ossweb-img.qq.com/images/lol/web201310/skin/big10001.jpg'
    ],
    cardCur:0,
    windowWidth:wx.getSystemInfoSync().windowWidth,
    radio:1,
    bgIndex:'',
  },
  cardFinish(e){
    this.setData({
      radio:1,
      bgIndex:0,
      cardCur: e.detail.current,
    })
  },
  cardSition(e){
    let dx = Math.abs(e.detail.dx),windowWidth = e.currentTarget.dataset.windowwidth,
    bgindex = e.currentTarget.dataset.bgindex;
    let num = dx / windowWidth
    let radio = 1 - num < 0.9?0.9:1 - num;
    let index = num > 0.45?(e.detail.dx < 0?-1:1):0
    this.setData({
      radio,
    })
    if(index != bgindex){
      this.setData({
        bgIndex:index,
      })
    }
  },
})

.wxss

复制代码
view,scroll-view,swiper,image {box-sizing: border-box;}
.swiper-index{padding: 10px;height: 260px;padding-top:100px;position: relative;}
.swiper-index::after{content: '';width: 120%;position: absolute;
  left: -10%;bottom: -30px;height: 30px;box-shadow: 0 -15px 15px 0px rgba(255,255,255,0.6);}
.swiper-bg{position: absolute;left: 0;top: 0;width: 100%;height: 100%;filter: var(--filter--);z-index: -1;
transition: all 0.3s;}
.card-swiper {height: 130px !important;width: 100%;}
.card-swiper swiper-item {overflow: hidden;border-radius: 20rpx;}
.swiper-image{width:var(--width--);height: 260px;position: absolute;left: -10px;top: -100px;}
.card-swiper swiper-item .swiper-item {width: 100%;display: block;height: 100%;
transition: all 0.2s ease-in 0s;overflow: hidden;}
.card-swiper swiper-item.cur .swiper-item {transform: none;transform: scale(var(--scale--));
transition: all 0.1s ease-in 0s;border-radius: 20rpx;}
swiper.square-dot .wx-swiper-dot {background-color: #fff;opacity: 0.4;width: 10rpx;
height: 10rpx;border-radius: 20rpx;margin: 0 8rpx !important;}
swiper.square-dot .wx-swiper-dot.wx-swiper-dot-active {opacity: 1;width: 30rpx;}

遇到问题可以看我主页加我Q,很少看博客,对你有帮助别忘记点赞收藏。

相关推荐
独角鲸网络安全实验室8 小时前
2026微信小程序抓包全解析:从实操落地到合规风控,解锁前端调试新范式
前端·微信小程序·小程序·抓包·系统代理绕过·https证书严格校验·进程隔离
fix一个write十个13 小时前
【uniApp开发】微信小程序 web-view 内嵌 H5 跳转支付踩坑实录
微信小程序·uni-app
棋宣1 天前
微信小程序onShareAppMessage 分享-生命周期函数 在vue3中 组合式函数 hooks中不生效
微信小程序·小程序
好赞科技1 天前
深度测评2026年精选美发预约小程序排行榜 革新预约新体验 修订
大数据·微信小程序
一颗无敌码农2 天前
多商户与多门店电商系统有什么区别?核心模式解析
微信小程序·php·用户运营·crmeb
hhzz2 天前
记录微信小程序tabbar不显示问题:uni-app Vue 3 自定义 tabBar 不渲染
vue.js·微信小程序·uni-app
Greg_Zhong2 天前
微信小程序中调用豆包【免费】模型,实现小程序版ai助手完整版
微信小程序·豆包模型·调用豆包模型封装ai助手
30763 天前
uni-app在微信小程序国际化分包方案:优雅解决主包体积超限问题
微信小程序
打瞌睡的朱尤3 天前
微信小程序50~75
微信小程序·小程序
ZC跨境爬虫3 天前
【零基础实战】Fiddler抓取PC微信小程序数据流,爬取华为商城商品配置+真实评论(完整可运行代码+逐行解析)
测试工具·微信小程序·fiddler