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

news2024/12/24 8:37:43

需求说明

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

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

实现

封装数组转换方法

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

  /**
   * 将一维数组转成二维数组
   * arr:一维数组
   * num:二维数组的长度
   * 返回值:二维数组
   * */
  changeArr(arr, num) {
    let newArr = []
    for (let i = 0; i < arr.length; i += num) {
       newArr.push(arr.slice(i, i + num))
    }
    return newArr
  }

页面实现

数据结构

    lightModeList: [
      {
        mode_name: '温馨',
        id: 0,
      },
      {
        mode_name: '浪漫',
        id: 1,
      },
      {
        mode_name: '起夜',
        id: 2,
      },
      {
        mode_name: '标准',
        id: 3,
      },      
      {
        mode_name: '睡眠',
        id: 4,
      }
    ]

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

  /**
   * 给列表数据加上图标匹配
   * modeList:列表数据
   * 返回值:加上图标匹配的列表数据
   * */
  addIconToModeList(modeList) {
    let list = modeList
    for (let i = 0; i < list.length; i++) {
      list[i].icon = list[i].id + ''
      list[i].selectIcon = list[i].id + '_select'
    }
     return list
  },

数据转换

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

页面显示

    <!-- 灯光模式 -->
    <div class="my-swipe">
      <div class="swipe-title">灯光模式</div>
      <van-swipe :lazy-render="true" indicator-color="#FFBD4F">
        <van-swipe-item v-for="(itemList, keyIndex) in newLightModeList" :key="keyIndex" class="swiper-item-box">
          <div v-for="(item,index) in itemList" :key="index" class="swiper-item" @click="selectMode(item)">
            <div class="swiper-item-img">
              <img :src="selectLightValue===item.id?getIconImg(item.selectIcon):getIconImg(item.icon">
              <img :src="selectLightValue===item.id?getIconImg(item.selectIcon):getIconImg(item.icon">
            </div>
            <div class="swiper-item-text">
              <p>{{ item.mode_name }}
            </div>
          </div>
        </van-swipe-item>
      </van-swipe>
    </div>

样式

.my-swipe{
  width: 100%;
  margin: 15px 0;
  background: #fff;
  padding: 10px 0;
  border-radius: 15px;
  .swipe-title{
    font-size: 16px;
    color: #333;
    padding: 10px 0;
    margin-left: 10px;
    font-weight: bold;
  }
  .swiper-item-box{
    display: flex;
    align-items:center;
    .swiper-item{
      display: flex;
      flex-direction: column;
      align-items:center;
      width: 33%;
      .swiper-item-img:active{
         scale: 1.1;
       }
      .swiper-item-img{
        width: 40px;
        height: 40px;
        img{
          width: 100%;
          height: 100%;
        }
      }
      .swiper-item-text{
        font-size: 14px;
        color: #666;
      }
    }
  }
}
       

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1465879.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

springboot750人职匹配推荐系统

springboot750人职匹配推荐系统 获取源码——》公主号&#xff1a;计算机专业毕设大全

MongoDB从入门到实战之.NET Core使用MongoDB开发ToDoList系统(8)-Ant Design Blazor前端框架搭建

前言 前面的章节我们介绍了一些值得推荐的Blazor UI组件库&#xff0c;通过该篇文章的组件库介绍最终我选用Ant Design Blazor这个UI框架作为ToDoList系统的前端框架。因为在之前的工作中有使用过Ant Design Vue、Ant Design Angular习惯并且喜欢Ant Design设计规范和风格&…

学生成绩管理系统(C语言课设 )

这个学生成绩管理系统使用C语言编写&#xff0c;具有多项功能以方便管理学生信息和成绩。首先从文件中读取数据到系统中&#xff0c;并提供了多种功能&#xff08;增删改查等&#xff09;选项以满足不同的需求。 学生成绩管理系统功能: 显示学生信息增加学生信息删除学生信息…

如何解决服务器之间大量数据文件传输交换慢的问题?

在信息化时代&#xff0c;企业运营的核心之一便是服务器间的数据交换效率。数据流通的速度直接关系到业务的响应速度和企业的整体表现。然而&#xff0c;数据传输速度缓慢的问题时常成为企业发展的绊脚石&#xff0c;可能导致严重的业务损失。本文将深入探讨造成服务器数据传输…

【MySQL】如何理解索引(高频面试点)

一、前言 首先这个博客会介绍一些关于MySQL中索引的基本内容以及一些基本的语法&#xff0c;当然里面也会有些常见的面试题的解答。 二、关于索引 1、概念 索引是一种能够帮助MySQL高效的去磁盘检索数据的一种数据结构。在MySQL的Innodb存储引擎中呢&#xff0c;采用的是B树的…

software framwork

software framwork软件架构 软件架构&#xff0c;之前图没找到&#xff0c;随手画了一个啦&#xff0c;了解架构细分职能和工作任务&#xff1a; 下图&#xff0c;第一是客户端架构包项目&#xff0c;第二是服务端架构包项目 -----------------------------------------------…

Thymeleaf无法显示模板视图,加载页面显示404状态问题的解决方法

本篇文章主要讲解&#xff1a;Thymeleaf无法显示模板视图&#xff0c;加载页面显示404状态问题的解决方法 日期&#xff1a;2024年2月23日 作者&#xff1a;任聪聪 现象说明&#xff1a; 1.只返回输出模板的名称&#xff0c;如图&#xff1a; 2.显示报错信息&#xff1a; Whi…

数字化转型导师坚鹏:县域数字化转型案例研究

县域数字化转型案例研究 课程背景&#xff1a; 很多县级政府存在以下问题&#xff1a; 不清楚县域数字化转型的发展模式 不清楚县域数字化转型的成功案例 课程特色&#xff1a; 针对性强 实用性强 创新性强 学员收获: 学习县域数字化转型的发展模式。 学习县…

129.乐理基础-曾音程、减音程、等音程

内容参考于&#xff1a;三分钟音乐社 上一个内容&#xff1a;128.乐理基础-五线谱-纯四度、纯五度-CSDN博客 上一个内容里练习的答案&#xff1a; 首先c1-重降e1&#xff0c;c1-升e1的时候&#xff0c;也都是三度&#xff0c;但距离肯定不一样这时该叫什么&#xff1f;如下图…

【Ucore 操作系统】3. 多道程序与分时多任务

文章目录 【 0. 引言 】0.1 上章回顾0.2 背景0.3 协作式操作系统0.4 抢占式操作系统0.3 进程小述0.3 本章任务 【 1. 多道程序放置与加载 】1.1 多道程序的放置1.2 多道程序的加载 【 2. 进程基础结构 】2.1 进程的概念2.2 进程的基本管理2.3 进程的分配 【 3. 多道程序与协作式…

开发个IDEA插件

开发IDEA一个插件&#xff0c;但是这个插件的功能是个大杂烩吧&#xff0c; 主要完成以下几个功能&#xff0c;方便组内开发人员提高效率。 1 网关会传过来登录人员的 一些核心字段&#xff0c;公司编码/用户编号/主岗。 因为存在多租户&#xff0c;所以经常要切换任务&…

【PostgreSQL】Windows安装PostgreSQL数据库图文详细教程

Windows安装PostgreSQL数据库图文详细教程 一、前言二、PostgreSQL简介三、软件下载四、安装步骤4.1 安装向导4.2 选择安装目录4.3 选择组件4.4 选择数据存放目录4.5 选择密码4.6 选择端口号4.7 等待安装完成4.8 取消勾选&#xff0c;安装完成 五、启动教程5.1 搜索pgAdmin4&am…

ChatGPT 4 教你完成学生表,教师表,课程表,选课表之间的SQL学习

数据源准备&#xff1a; # 学生表 create table student( sno varchar(10) primary key, #学号sname varchar(20), #姓名sage int(2), #年龄ssex varchar(5) #性别 ); #教师表 create table teacher( tno varchar(10) primary …

思维模型整合

思维模型整合 4P--- 4C思考模型能力圈模型 4P— 4C思考模型 在竞争激烈的今天&#xff0c;每个赛道都有众多可以为客户提供相同价值的对手&#xff0c;而赛道中的佼佼者之所以能打败大部分人&#xff0c;可能并不是他们能比别人更能讨好大众&#xff0c;而是因为在这个赛道它有…

windows11安装VMware----创建多虚拟机教程

一、centOS下载 1、官网地址&#xff1a;https://www.centos.org/ 2、阿里镜像站&#xff1a;https://mirrors.aliyun.com/centos 3、清华镜像源&#xff1a;https://mirrors.tuna.tsinghua.edu.cn/centos/ 3.、CentOS搜狐镜像&#xff1a;http://mirrors.sohu.com/centos/…

Chat With RTX 安装、使用问题记录

1.安装包运行检测环境失败 安装适合的的CUDA&#xff1a;https://developer.nvidia.com/cuda-downloads?target_osWindows&target_archx86_64&target_version11 2.安装Chat With RTX 和 模型 Mistral 7B 失败 科学上网&#xff0c;可以单独装Chat With RTX 先&…

element ui 安装 简易过程 已解决

我之所以将Element归类为Vue.js&#xff0c;其主要原因是Element是&#xff08;饿了么团队&#xff09;基于MVVM框架Vue开源出来的一套前端ui组件。我最爱的就是它的布局容器&#xff01;&#xff01;&#xff01; 下面进入正题&#xff1a; 1、Element的安装 首先你需要创建…

面试时,被问到频繁跳槽该如何回应?

有数据显示&#xff0c;现在的职场人&#xff0c;跳槽越来越频繁&#xff0c;95后平均7个月就离职。 对于面试官来说&#xff0c;一个跳槽过于频繁的人总是存在潜在风险&#xff0c;比如抗压力差、稳定性不好、心不定这山望着那山高、职业规划不清晰等等。 我一直强调一个观点…

TYPE-C接口桌面显示器:视频与充电的双重革新

在现代科技的浪潮中&#xff0c;TYPE-C接口桌面显示器崭露头角&#xff0c;它不仅仅是一台显示器&#xff0c;更是充电与视频传输的完美融合。这种新型的显示器&#xff0c;凭借其TYPE-C接口&#xff0c;实现了从DC电源到PD协议充电的华丽转身&#xff0c;为众多设备如笔记本电…

二、基本语法

一、变量声明 1、语法 <变量名称>: <变量类型> <变量值> 2、变量类型 字符串&#xff1a;string 数值&#xff0c;整数、浮点数都可以&#xff1a;number 布尔&#xff1a;boolean 任意类型&#xff1a;any 联合类型&#xff0c;指定的多个类型中的…