• Vant轮播多个div结合二维数组的运用


    需求说明

            在开发H5的时候,结合Vant组件的轮播组件Swipe实现如下功能。我们查阅vant组件库官方文档可以得知,每个SwipeItem组件代表一个卡片,实现的是每屏展示单张图片或者单个div轮播方式,具体可以查阅:Vant 2 - 轻量、可靠的移动端组件库 (youzan.github.io)

            这里的需求是要实现每屏展示多张图片或者说多个div卡片,那么这个时候就要考虑到多维数组嵌套循环,也就是两层循环。

    实现

    封装数组转换方法

            通常情况下,后台返回的数据一般都是一维数组结构,那么这个时候我们就需要自行处理数组结构,将一维数组转换为二维数组。我这里封装的一个数组转换方法如下:

    1. /**
    2. * 将一维数组转成二维数组
    3. * arr:一维数组
    4. * num:二维数组的长度
    5. * 返回值:二维数组
    6. * */
    7. changeArr(arr, num) {
    8. let newArr = []
    9. for (let i = 0; i < arr.length; i += num) {
    10. newArr.push(arr.slice(i, i + num))
    11. }
    12. return newArr
    13. }

    页面实现

    数据结构

    1. lightModeList: [
    2. {
    3. mode_name: '温馨',
    4. id: 0,
    5. },
    6. {
    7. mode_name: '浪漫',
    8. id: 1,
    9. },
    10. {
    11. mode_name: '起夜',
    12. id: 2,
    13. },
    14. {
    15. mode_name: '标准',
    16. id: 3,
    17. },
    18. {
    19. mode_name: '睡眠',
    20. id: 4,
    21. }
    22. ]

    由于我这里还有一个需求,就是图标数据后台不返回,需要H5本地保存并进行匹配,所以我这里还会用到另外一个方法进行图片字段的处理:

    1. /**
    2. * 给列表数据加上图标匹配
    3. * modeList:列表数据
    4. * 返回值:加上图标匹配的列表数据
    5. * */
    6. addIconToModeList(modeList) {
    7. let list = modeList
    8. for (let i = 0; i < list.length; i++) {
    9. list[i].icon = list[i].id + ''
    10. list[i].selectIcon = list[i].id + '_select'
    11. }
    12. return list
    13. },

    数据转换

    1. ...
    2. this.newLightModeList = this.$threeInchCommon.addIconToModeList(this.lightModeList)
    3. this.newLightModeList = this.$threeInchCommon.changeArr(this.newLightModeList, 3)
    4. ...

    页面显示

    1. <div class="my-swipe">
    2. <div class="swipe-title">灯光模式div>
    3. <van-swipe :lazy-render="true" indicator-color="#FFBD4F">
    4. <van-swipe-item v-for="(itemList, keyIndex) in newLightModeList" :key="keyIndex" class="swiper-item-box">
    5. <div v-for="(item,index) in itemList" :key="index" class="swiper-item" @click="selectMode(item)">
    6. <div class="swiper-item-img">
    7. <img :src="selectLightValue===item.id?getIconImg(item.selectIcon):getIconImg(item.icon">
    8. <img :src="selectLightValue===item.id?getIconImg(item.selectIcon):getIconImg(item.icon">
    9. div>
    10. <div class="swiper-item-text">
    11. <p>{{ item.mode_name }}
    12. div>
    13. div>
    14. van-swipe-item>
    15. van-swipe>
    16. div>

    样式

    1. .my-swipe{
    2. width: 100%;
    3. margin: 15px 0;
    4. background: #fff;
    5. padding: 10px 0;
    6. border-radius: 15px;
    7. .swipe-title{
    8. font-size: 16px;
    9. color: #333;
    10. padding: 10px 0;
    11. margin-left: 10px;
    12. font-weight: bold;
    13. }
    14. .swiper-item-box{
    15. display: flex;
    16. align-items:center;
    17. .swiper-item{
    18. display: flex;
    19. flex-direction: column;
    20. align-items:center;
    21. width: 33%;
    22. .swiper-item-img:active{
    23. scale: 1.1;
    24. }
    25. .swiper-item-img{
    26. width: 40px;
    27. height: 40px;
    28. img{
    29. width: 100%;
    30. height: 100%;
    31. }
    32. }
    33. .swiper-item-text{
    34. font-size: 14px;
    35. color: #666;
    36. }
    37. }
    38. }
    39. }

  • 相关阅读:
    Hive的时间操作函数
    编码中的Adapter,不仅是一种设计模式,更是一种架构理念与解决方案
    PySpark数据分析基础:PySpark基础功能及DataFrame操作基础语法详解
    【17】c++设计模式——>原型模式
    Django简单介绍
    SpringBoot 学习(十)分布式理论
    C#网页打印功能实现
    草图大师SketchUp Pro 2023
    JSP request对象:获取客户端的请求信息
    java-抽象类、抽象方法
  • 原文地址:https://blog.csdn.net/weixin_46872121/article/details/136228207