微信小程序开发——自定义堆叠图

news2024/11/17 3:38:35

先看效果图

点击第一张图片实现折叠,再次点击实现展开

思路

图片容器绑定点击事件获取当前图片索引,触发onTap函数,根据索引判断当前点击的图片是否为第一张,并根据当前的折叠状态来更新每张图片的位置,注意图片向上移动的距离与索引成正相关,而且始终是索引越小层级越大。

代码

<!-- WXML -->
<view class="bigFoldBox">
    <view class='foldBox' style='--distance: {{isFold[index]}}px; --z-index: {{zIndex[index]}};' wx:for="{{images0}}" wx:key="index" bindtap='onTap' data-index="{{index}}">
	    <image src="{{item.src}}" class='image' mode="aspectFit" ></image>
	</view>
</view>
/* WXSS */
.bigFoldBox{
	width: 100vw;
	border-top: calc(1 / 360 * 750rpx) black solid;
}
.image{
	width: calc(360 / 360 * 750rpx);
	height: calc(125 / 360 * 750rpx);
}
.foldBox {
    position: relative;
    transform: translateY(var(--distance));
    z-index: var(--z-index);
    transition: transform 0.5s ease;
}
// JS
data: {
        images0: [{src: "https://i0.hdslb.com/bfs/new_dyn/f751c91ef0cdbe8c42bf9c3e088b5d46402122872.jpg@!web-comment-note.avif"},
        {src: "https://i0.hdslb.com/bfs/new_dyn/f751c91ef0cdbe8c42bf9c3e088b5d46402122872.jpg@!web-comment-note.avif"},
        {src: "https://i0.hdslb.com/bfs/new_dyn/f751c91ef0cdbe8c42bf9c3e088b5d46402122872.jpg@!web-comment-note.avif"},
        {src: "https://i0.hdslb.com/bfs/new_dyn/f751c91ef0cdbe8c42bf9c3e088b5d46402122872.jpg@!web-comment-note.avif"},
        {src: "https://i0.hdslb.com/bfs/new_dyn/f751c91ef0cdbe8c42bf9c3e088b5d46402122872.jpg@!web-comment-note.avif"}
        ],
        isFold: [],
        zIndex: [], 
        isFolded: true
},
// 点击图片获取索引
onTap(e) {
    let index = e.currentTarget.dataset.index;
    if (index === 0) {
        let newIsFold = this.data.isFolded ? 
        this.data.isFold.map((value, i) => 0) : 
        this.data.isFold.map((value, i) => -i * 100);
        this.setData({ 
            isFold: newIsFold,
            // zIndex: newZIndex, // 不需要更改层级状态
            isFolded: !this.data.isFolded,  // 更新折叠状态
        });
    }
}
onLoad: function() {
    // 在页面加载时,根据 images0 数组的长度设置 isFold 和 zIndex 数组
    let isFold = new Array(this.data.images1.length).fill(0).map((v, i) => -i * 105);
    let zIndex = new Array(this.data.images1.length).fill(0).map((v, i) =>  this.data.images1.length - i);
    this.setData({ isFold: isFold, zIndex: zIndex });
},

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

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

相关文章

android插件开发

写文件&#xff1a;二进制&#xff1a; 项目步骤&#xff1a;下载图片&#xff0c;转码。测试显示。 测试加的代码 写文件&#xff0c;二进制&#xff0c;Base64解码&#xff1a;

基于复旦微JFM7K325T FPGA的高性能PCIe总线数据预处理载板(100%国产化)

PCIE711是一款基于PCIE总线架构的高性能数据预处理FMC载板&#xff0c;板卡采用复旦微的JFM7K325T FPGA作为实时处理器&#xff0c;实现各个接口之间的互联。该板卡可以实现100%国产化。 板卡具有1个FMC&#xff08;HPC&#xff09;接口&#xff0c;1路PCIe x8主机接口&#x…

2023.10.07

#include <iostream>using namespace std;int main() {string str;cout << "请输入字符串&#xff1a;";getline(cin,str);int big0,little0,spac0,num0,sym0;int sizestr.size();for(int i0;i<size;i){if((int)str.at(i)<6526 && (int)st…

可怕,鸡的这些部位千万不能吃?多数人都不知道……

鸡肉深受大多数人的喜爱&#xff0c;但网上关于鸡肉的说法也是各式各样&#xff1a; 有人说“鸡头当中含有重金属物质&#xff0c;食用有危害”&#xff1b;有人说“鸡皮不能吃&#xff0c;不然会中毒”&#xff1b;甚至还有人说“鸡肉不能吃&#xff0c;否则会致癌”…… 网传…

VMware 虚拟机删除+重建

由于本人暴力地关闭虚拟机&#xff0c;导致虚拟机出现了一些问题&#xff0c;并且还没有给虚拟机拍快照&#xff0c;虽然还能用&#xff0c;但本人不想将就&#xff0c;于是乎打算重新新建一个虚拟机 一、删除 1.打开workstation,选择虚拟机&#xff0c;右键选择移除。 虽然虚…

x64内核实验7-线程

x64内核实验7-线程 TOC 线程是比较重要的内核结构&#xff0c;思考一下其实可以想到线程结构体在64位下的变化应该不会很大最多只是扩充了一些内容&#xff0c;因为从我们之前分析段页时候会发现cpu更新的这些内容大部分不影响xp时候的线程切换机制&#xff0c;下面我们来验证…

无法打开软件,因为计算机中找不到MSVCP140.dll的解决方法

msvcp140.dll是Microsoft Visual C 2015 Redistributable的一个动态链接库文件&#xff0c;它是Microsoft Visual Studio 2015的一部分。这个文件包含了许多用于运行C程序所需的运行时函数和数据。当计算机上安装了Visual Studio 2015或更高版本时&#xff0c;msvcp140.dll文件…

嵌入式Linux裸机开发(四)IMX6U主频和时钟配置

系列文章目录 文章目录 系列文章目录介绍时钟来源PLL时钟源内核时钟PFD时钟AHB、 IPG 和 PERCLK 根时钟设置 结语 介绍 默认配置下 I.MX6U 工作频率为 396MHz&#xff0c;但该系列标准工作频率事528MHz&#xff0c;有些型号甚至可以工作到696MHz。 默认情况下内部 boot rom 会…

阿里云服务器ECS经济型e实例租用价格表

阿里云服务器e系列优惠价格&#xff1a;2核2G配置182元一年、2核4G配置365元一年、2核8G配置522元一年&#xff0c;e系列即ECS经济型e实例&#xff0c;CPU采用Intel Xeon Platinum可扩展处理器&#xff0c;系统盘支持ESSD Entry云盘&#xff08;推荐&#xff09;、ESSD云盘、ES…

【SpringBoot】| Thymeleaf 模板引擎

目录 Thymeleaf 模板引擎 1. 第一个例子 2. 表达式 ①标准变量表达式 ②选择变量表达式&#xff08;星号变量表达式&#xff09; ③链接表达式&#xff08;URL表达式&#xff09; 3. Thymeleaf的属性 ①th:action ②th:method ③th:href ④th:src ⑤th:text ⑥th:…

【yolo系列:yolov7改进wise-iou】

yolo系列文章目录 学习视频&#xff1a; YOLOV7改进-Wise IoU_哔哩哔哩_bilibili 代码地址&#xff1a; objectdetection_script/yolov7-iou.py at master z1069614715/objectdetection_script (github.com) 文章目录 yolo系列文章目录一、在yolov7之上进行替换二、在loss.p…

双馈风力发电机-900V直流混合储能并网系统Simulink仿真

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

C++默认参数(实参)

在本文中&#xff0c;您将学习什么是默认参数&#xff0c;如何使用它们以及使用它的必要声明。在C 编程中&#xff0c;您可以提供函数参数的默认值。默认参数背后的想法很简单。如果通过传递参数调用函数&#xff0c;则这些参数将由函数使用。但是&#xff0c;如果在调用函数时…

几道web题目

总结几道国庆写的web题目 [ACTF2020 新生赛]Include1 点进去发现就一个flag.php,源代码和抓包都没拿到好东西 结合题目猜是文件包含&#xff0c;构建payload ?filephp://filter/readconvert.base64-encode/resourceflag.php 得到base64编码过的flag&#xff0c;解码即可 此题…

榜单发布!AR-HUD进入LCoS时代,哪些企业正在领跑

高工智能汽车研究院监测数据显示&#xff0c;今年1-7月中国市场&#xff08;不含进出口&#xff09;乘用车前装标配W/AR HUD交付108.35万辆&#xff0c;同比增长47.98%&#xff0c;前装搭载率升至9.82%。 其中&#xff0c;从价位区间分布来看&#xff0c;30万元及以上车型标配W…

【Overload游戏引擎分析】画场景栅格的Shader分析

Overload引擎地址&#xff1a; GitHub - adriengivry/Overload: 3D Game engine with editor 一、栅格绘制基本原理 Overload Editor启动之后&#xff0c;场景视图中有栅格线&#xff0c;这个在很多软件中都有。刚开始我猜测它应该是通过绘制线实现的。阅读代码发现&#xff0…

2023年,有哪些好用的互联网项目管理软件?

项目管理是为了使工作项目能够按照预定的需求、成本、进度、质量顺利完成&#xff0c;而对人员、产品、过程和项目进行分析和管理的活动。 一直以来&#xff0c;项目管理被企业管理人员和各级人员所重视&#xff0c;项目管理是一个项目的灵魂&#xff0c;只有做好了项目管理&am…

IO流 Java

IO 字节输入流 1&#xff1a;我使用while遍历 用循环来遍历文件里的数据 读取性能很差 读取汉字和维语字 会乱码 无法避免的 流使用完毕之后 必须关闭 释放系统资源 out.close();//关闭流 package IO_TEST;import java.io.File; import java.io.FileInputStream;import java…

用《斗破苍穹》的视角打开C#委托2 委托链 / 泛型委托 / GetInvocationList

委托链 经过不懈地努力&#xff0c;我终于成为了斗师&#xff0c;并成功掌握了两种斗技——八极崩和焰分噬浪尺。于是&#xff0c;我琢磨着&#xff0c;能不能搞一套连招&#xff0c;直接把对方带走。 using System; using System.Collections.Generic; using System.Linq; u…

项目环境搭建

注册中心网关配置 spring:cloud:gateway:globalcors:add-to-simple-url-handler-mapping: truecorsConfigurations:[/**]:allowedHeaders: "*"allowedOrigins: "*"allowedMethods:- GET- POST- DELETE- PUT- OPTIONroutes:# 平台管理- id: useruri: lb://…