微信小程序swiper实现层叠轮播图

news2024/11/20 12:29:10

在微信小程序中,需要实现展示5个,横向层叠的轮播图效果,轮播图由中间到2侧的依次缩小.如下图效果图
使用原生小程序进行开发,没有使用Skyline模式,所以layout-type配置项也无效。所以基于swiper组件进行调整。
主要思路就是设置不同的样式,根据当前激活的项,来动态切换样式。
需要注意的是,下文激活的项指的是中间最大的一项,而不是swiper激活的最左侧的一项

1. swiper-item

由于有层叠效果,所以要给不同的swiper-item元素添加上不同的zindex层级。而swiper-item元素自带绝对定位。
在这里插入图片描述
根据层叠数量决定需要加几个层级。当有5个时,只要给激活的中间项加上最高的层级,左右2侧加上低一层级。

2. item

不同层级的swiper-item中的item对应有不同的样式,根据所在的不同层级,需要给对应的item添加上具体的效果样式。
此效果需要给不同的item添加缩放和左右偏移样式

3.动态切换

在轮播图的切换中,需要给各个swiper-item动态切换样式。
我实现的方式是在swiper的bindchange方法中改变激活项的序号,编写wxs方法,将当前激活序号和此项序号传入方法进行判断,返回不同的类,wxml动态渲染不同的类。
同时轮播图一般需要循环无限滚动,所以也需要加上轮播图项的个数。

<swiper class="swiperedu" display-multiple-items="5"  circular="{{true}}" bindchange="swiperChange" autoplay="{{true}}">
	<swiper-item wx:for="{{list}}" wx:key="{{item}}" class="{{transform.classindex(index,nowIdx,listlen)}}">
    <view class='{{transform.classtype(index,nowIdx,listlen)}}'></view>
	</swiper-item>
</swiper>

classindex方法动态的判断swiper-item的层级,classtype方法动态判断item的样式。

// 判断样式
var classtype = function(index,curindex,length){
  var indexnum = parseInt(index),curindexnum = parseInt(curindex);
  var cha = Math.abs(indexnum-curindexnum);
  //激活项是list最后一项
  if(curindex ==length-1){
  // 首尾衔接,第一项在最后一项右边
    if(index==0){
      return '激活项右边样式类';
    }
  }
  //激活项是list最后一项
  else if(curindex==0){
  // 首尾衔接,最后一项在第一项在左边
    if(index==length-1){
      return '激活项右左边样式类';
    }
  }
  //激活项
  if(cha==0){
    return '激活项样式'
  }
  //激活项右侧
  else if(indexnum-curindexnum==1){
    return '激活项右边样式类';
  }
  //激活项左侧
  else if(indexnum-curindexnum==-1){
    return '激活项左边样式类';
  }
  else {
    return '普通样式'
  }
}
// 判断层级
var classindex = function(index,curindex,length){
  var indexnum = parseInt(index),curindexnum = parseInt(curindex);
  var cha = Math.abs(indexnum-curindexnum);
  //激活swipet-item是list最后一项
  if(curindex ==length-1){
  // 首尾衔接,第一swiper-item在最后一个右边
    if(index==0){
      return 'zindex2';
    }
  }
   //激活swiper-item是list最后一项
  else if(curindex==0){
  // 首尾衔接,最后swiper-item在第一个左边
    if(index==length-1){
      return 'zindex2';
    }
  }
  //激活项,层级最高
  if(cha==0){
    return 'zindex3'
  }
  //左右两侧,层级第2
  else if(cha==1){
    return 'zindex2';
  }
  //普通不加层级
  else {
    return ''
  }
}

轮播图循环变化时,要计算%的序号

    swiperChange(e) {
        this.setData({
            nowIdx: (e.detail.current + 2) % this.data.list.length,
        })
    },

e.detail.current是轮播图的currentIndex,指的是swiper最左侧的swiper,由于效果中激活项是坐起第3项,所以激活的index需要+2;

总结

这个效果的变化是由swiper自动切换,触发bindchange方法推动的。没有显式的声明swiper的current。
对于提供给用户切换箭头方法的层叠轮播图,需要声明swiper的current属性,用户的切换和current切换的事件会相互冲突,那个效果有时间再写吧

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

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

相关文章

Mysql 分割字符串,一行变多行,@rownum,mysql.help_topic

1 前言 朋友最近遇到一个比较棘手的 sql 问题&#xff0c;让我帮忙看看&#xff1a; 他有两张表 testa 和 testb &#xff0c;一个表存的日期&#xff0c;另一个表存字符串例如 2023-11-01,2023-11-02&#xff0c;如何将这两张表关联起来&#xff0c;只查 testa 表的数据&#…

MES数据采集在制造业的应用

MES设备数据采集的流程包括以下几个步骤&#xff1a; 1. 设备接入&#xff1a;将设备接入MES系统&#xff0c;建立设备与MES系统之间的连接。 2. 数据采集&#xff1a;通过传感器和采集器等设备&#xff0c;采集设备运行数据和状态信息。 3. 数据存储&#xff1a;将采集到的设…

如何给字符串字段添加索引

MySQL是支持前缀索引的&#xff0c;可以定义字符串的一部分作为索引&#xff0c;如果创建索引的语句不指定前缀长度&#xff0c;那么索引就会包含整个字符串。 alter table SUser add index index1(email);alter table SUser add index index2(email(6)); 如上两个创建索引的语…

快速了解VR全景拍摄技术运用在旅游景区的优势

豆腐脑加了糖、烤红薯加了勺&#xff0c;就连索菲亚大教堂前都有了“人造月亮”&#xff0c;在这个冬季&#xff0c;“尔滨”把各地游客宠上了天。面对更多的游客无法实地游玩&#xff0c;哈尔滨冰雪世界再添新玩法&#xff0c;借助VR全景拍摄技术对冬季经典冰雪体验项目进行全…

机器学习_9、朴素贝叶斯

朴素贝叶斯解决鸢尾花数据集问题 #高斯朴素贝叶斯分类 #codingutf-8 from sklearn.datasets import load_iris from sklearn.model_selection import train_test_split from sklearn.naive_bayes import GaussianNB import numpy as np# 导入数据集&#xff0c;并查看数据特征…

ssm+vue的城投公司企业人事管理系统设计与实现(有报告)。Javaee项目,ssm vue前后端分离项目。

演示视频&#xff1a; ssmvue的城投公司企业人事管理系统设计与实现&#xff08;有报告&#xff09;。Javaee项目&#xff0c;ssm vue前后端分离项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#x…

华为鸿蒙凉了?谣言还是

华为鸿蒙系统凉了吗&#xff1f;我们从目前的一系列新闻来看。鸿蒙并没有凉&#xff0c;反而愈发强大。从下面的一些新闻事实可以看出华为鸿蒙已经和Android、ios形成竞争对手了。 1、华为宣布鸿蒙4.0的发布 2023年7月&#xff0c;华为开发者大会上正式宣布。华为发布了备受期…

springboot摄影跟拍预定管理系统源码和论文

首先,论文一开始便是清楚的论述了系统的研究内容。其次,剖析系统需求分析,弄明白“做什么”,分析包括业务分析和业务流程的分析以及用例分析,更进一步明确系统的需求。然后在明白了系统的需求基础上需要进一步地设计系统,主要包罗软件架构模式、整体功能模块、数据库设计。本项…

2024年1月1日孙溟㠭篆刻艺术展开幕式于北京大学北大书店成功举办

“印记青春——会说话的石头” 主题文化展盛大开幕 2024年1月1日正值新年伊始&#xff0c;由北京大学出版社、北大书店、不黑文化艺术学社、中国诗书画研究会三才书画院联合举办的“印记 青春——会说话的石头”主题篆刻艺术展&#xff0c;在北京大学新太阳学生中心拉开帷幕。 …

base64与BytesIO图片进行编码、解码;api调用

base64与BytesIO简单介绍 io.BytesIO 和 Base64 编码都是用于在内存中处理二进制数据的方法&#xff0c;但它们的目的和使用场景有所不同。 1&#xff09; io.BytesIO io.BytesIO 是 Python io 库中的一个类&#xff0c;它提供了一个在内存中处理二进制数据的接口&#xff0…

【排序】快速排序(C语言实现)

文章目录 前言1. Hoare思想2. 挖坑法3. 前后指针法4. 三路划分5. 快速排序的一些小优化5.1 三数取中常规的三数取中伪随机的三数取中 5.2 小区间优化 6. 非递归版本的快排7. 快速排序的特性总结 前言 快速排序是Hoare于1962年提出的一种二叉树结构的交换排序方法&#xff0c;其…

设计模式之组合模式【结构型模式】

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档> 学习的最大理由是想摆脱平庸&#xff0c;早一天就多一份人生的精彩&#xff1b;迟一天就多一天平庸的困扰。各位小伙伴&#xff0c;如果您&#xff1a; 想系统/深入学习某…

Python expandtabs()与endswith()方法

Python expandtabs()方法 描述 Python expandtabs() 方法把字符串中的 tab 符号(\t)转为空格&#xff0c;默认的空格数 tabsize 是 8。 语法 expandtabs()方法语法&#xff1a; string.expandtabs(tabsize8) 参数 tabsize -- 指定转换字符串中的 tab 符号(\t)转为空格的字…

边缘计算AI智能分析网关V4算力分析及应用场景

一、硬件介绍 智能分析网关V4是TSINGSEE青犀视频推出的一款高性能、低功耗的软硬一体AI边缘计算硬件设备&#xff0c;硬件采用BM1684芯片&#xff0c;集成高性能8核ARM A53&#xff0c;主频高达2.3GHz。硬件内置近40种AI算法模型&#xff0c;支持对接入的视频图像进行人、车、…

msvcr120.dll是什么?msvcr120.dll丢失要怎么去修复?

随着计算机技术的不断发展&#xff0c;我们在使用软件或游戏时经常会遇到各种错误提示&#xff0c;其中找不到msvcr120.dll就是一种常见的错误。那么&#xff0c;msvcr120.dll是什么&#xff1f;它的作用是什么&#xff1f;如何修复msvcr120.dll丢失的问题&#xff1f;本文将为…

20个很棒的SEO博客和网站

搜索引擎优化 &#xff08;SEO&#xff09; 标准在不断变化。与社交媒体、电子邮件营销和人工智能 &#xff08;AI&#xff09; 等新兴技术一样&#xff0c;搜索引擎正在改进它们每天向用户提供结果的方式。 为此&#xff0c;他们专注于本地化、页面权限、点击率&#xff0c;甚…

数据结构与算法之美学习笔记:46 | 概率统计:如何利用朴素贝叶斯算法过滤垃圾短信?

目录 前言算法解析总结引申 前言 本节课程思维导图&#xff1a; 上一节我们讲到&#xff0c;如何用位图、布隆过滤器&#xff0c;来过滤重复的数据。今天&#xff0c;我们再讲一个跟过滤相关的问题&#xff0c;如何过滤垃圾短信&#xff1f; 垃圾短信和骚扰电话&#xff0c;我…

【MYSQL】MYSQL 的学习教程(十二)之 MySQL 啥时候用记录锁,啥时候用间隙锁

在「读未提交」和「读已提交」隔离级别下&#xff0c;都只会使用记录锁&#xff1b;而对于「可重复读」隔离级别来说&#xff0c;会使用记录锁、间隙锁和 Next-Key 锁 那么 MySQL 啥时候会用记录锁&#xff0c;啥时候会用间隙锁&#xff0c;啥时候又会用 Next-Key 锁呢&#xf…

美客多本土店与跨境店有何区别?本土店如何入驻运营?

美客多被誉为“拉美亚马逊”&#xff0c;作为拉美地区最大的跨境电商平台&#xff0c;吸引了不少跨境电商卖家入驻。但在入驻过程中也会遇到一个问题&#xff0c;本土店与跨境店分别是什么&#xff1f;有何区别&#xff1f;应该选择本土店还是跨境店入驻呢&#xff1f;下面为你…

使用YOLOv5训练自己的数据集 --- 老鼠识别

方式一&#xff1a;YOLOv5开源地址&#xff1a;https://github.com/ultralytics/yolov5/blob/master/README.zh-CN.md 方式二&#xff1a;YOLOv5源码&#xff1a;https://pan.baidu.com/s/12khk-Wkc5_J5ho4oZ7_FhA?pwdxtru 安装环境依赖包&#xff1a; 项目目录地址栏中输入…