小程序 卡片式动效实现

2024-05-10 15:36
文章标签 实现 程序 动效 卡片式

本文主要是介绍小程序 卡片式动效实现,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

效果如下:
在这里插入图片描述
demo:

<!-- 折叠轮播图 组件-->
<template><view class="swpbig"><viewref="swiperPanel"class="swiperPanel"@touchstart="startMove"@touchend="endMove"><viewv-for="(item, index) in swiperList":key="index"class="swiperItem":style="{transform: itemStyle[index].transform, zIndex: itemStyle[index].zIndex, opacity: itemStyle[index].opacity}"><view class="children"><view class="pic"><!-- <span>{{ index }}</span> --><imageclass="pici":src="item.url"/><!--  <imageclass="banner_signal"src="../../static/banner_signal.png"mode=""/> --><view class="swpnew">全新{{ index }}</view></view></view></view></view></view>
</template><script>
var timer
export default {props: {swiperList: {type: Array,default: () => [{type: 'Array'// url: '../../static/banone.png'}, {type: 'Array'// url: '../../static/bantwo.png'}, {type: 'Array'// url: '../../static/banthree.png'}, {type: 'Array'// url: '../../static/banthree.png'}, {type: 'Array'// url: '../../static/banthree.png'}]}},data() {return {slideNote: {x: 0,y: 0},screenWidth: 0,itemStyle: [],active: 0}},created() {var macInfo = uni.getSystemInfoSync()this.screenWidth = macInfo.screenWidth// 计算swiper样式this.swiperList.forEach((item, index) => {this.itemStyle.push(this.getStyle(index))})// timer = setInterval(() => {// this.rightSlider()// }, 3000)},methods: {rightSlider() {var newList = JSON.parse(JSON.stringify(this.itemStyle))var last = [newList.pop()]newList = last.concat(newList)this.itemStyle = newList},getStyle(e, style) {// if (e > this.swiperList.length / 2) {//   console.log(e)//   var right = this.swiperList.length - e//   return {//     transform: 'scale(' + (1 - right / 10) + ') translate(-' + (right * 9) + '%,0px)',//     zIndex: 9999 - right//     // opacity: 0.5 / right//   }// } else {return {transform: 'scale(' + (1 - e / 10) + ') translate(' + (e * 9) + '%,0px)',zIndex: 9999 - e// opacity: 0.5 / e}// }},startMove(e) {clearInterval(timer)this.slideNote.x = e.changedTouches[0] ? e.changedTouches[0].pageX : 0this.slideNote.y = e.changedTouches[0] ? e.changedTouches[0].pageY : 0},endMove(e) {// timer = setInterval(() => {//   this.rightSlider()// }, 3000)let staticTransform = ''let staticActive = ''var newList = JSON.parse(JSON.stringify(this.itemStyle))if ((e.changedTouches[0].pageX - this.slideNote.x) < 0) {staticActive = this.active// 向左滑动var last = [newList.pop()]// console.log('左滑', last)newList = last.concat(newList)const item = newList[staticActive]staticTransform = item.transformitem.transform = 'translateX(-110%) rotate(-10deg)'if (this.active <= this.itemStyle.length - 2) {this.active++} else {this.active = 0}} else if ((e.changedTouches[0].pageX - this.slideNote.x) > 0) {if (this.active === 0) {this.active = this.itemStyle.length - 1} else {this.active--}staticActive = this.active// 向右滑动newList.push(newList[0])newList.splice(0, 1)const item = newList[staticActive]staticTransform = item.transform// item.transform = 'translateX(-110%) rotate(-5deg)'} else {// 点击}this.itemStyle = newListsetTimeout(() => {const item = this.itemStyle[staticActive]item.transform = staticTransform}, 500)}}
}
</script><style lang="scss">.swpbig{overflow: hidden;margin-top: 100px;}.swiperPanel {margin-top: 50upx;height: 680upx;width: 686upx;overflow: hidden;position: relative;margin-left:80upx;.swiperItem {height: 100%;width: 100%;position: absolute;top: 0;left: 0upx;transition: all .5s;.children {// height: 100%;width: 570upx;margin: 2upx 160upx 2upx 0;position: relative;.pic {position: relative;height: 645rpx;width: 560rpx;border-radius: 10upx;}.pici{position: absolute;height: 645rpx;width: 560rpx;border-radius: 10upx;	background: red;}.banner_signal{position: absolute;height: 645rpx;width: 560rpx;top: 0;}.swpnew{position: absolute;height: 63rpx;font-size: 45rpx;font-weight: bold;color: #FFF;line-height: 53rpx;right: 28rpx;margin-top: 12rpx;letter-spacing: 5rpx;}}}}
</style>

这篇关于小程序 卡片式动效实现的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/976851

相关文章

python生成随机唯一id的几种实现方法

《python生成随机唯一id的几种实现方法》在Python中生成随机唯一ID有多种方法,根据不同的需求场景可以选择最适合的方案,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习... 目录方法 1:使用 UUID 模块(推荐)方法 2:使用 Secrets 模块(安全敏感场景)方法

Spring StateMachine实现状态机使用示例详解

《SpringStateMachine实现状态机使用示例详解》本文介绍SpringStateMachine实现状态机的步骤,包括依赖导入、枚举定义、状态转移规则配置、上下文管理及服务调用示例,重点解... 目录什么是状态机使用示例什么是状态机状态机是计算机科学中的​​核心建模工具​​,用于描述对象在其生命

Spring Boot 结合 WxJava 实现文章上传微信公众号草稿箱与群发

《SpringBoot结合WxJava实现文章上传微信公众号草稿箱与群发》本文将详细介绍如何使用SpringBoot框架结合WxJava开发工具包,实现文章上传到微信公众号草稿箱以及群发功能,... 目录一、项目环境准备1.1 开发环境1.2 微信公众号准备二、Spring Boot 项目搭建2.1 创建

IntelliJ IDEA2025创建SpringBoot项目的实现步骤

《IntelliJIDEA2025创建SpringBoot项目的实现步骤》本文主要介绍了IntelliJIDEA2025创建SpringBoot项目的实现步骤,文中通过示例代码介绍的非常详细,对大家... 目录一、创建 Spring Boot 项目1. 新建项目2. 基础配置3. 选择依赖4. 生成项目5.

golang程序打包成脚本部署到Linux系统方式

《golang程序打包成脚本部署到Linux系统方式》Golang程序通过本地编译(设置GOOS为linux生成无后缀二进制文件),上传至Linux服务器后赋权执行,使用nohup命令实现后台运行,完... 目录本地编译golang程序上传Golang二进制文件到linux服务器总结本地编译Golang程序

Linux下删除乱码文件和目录的实现方式

《Linux下删除乱码文件和目录的实现方式》:本文主要介绍Linux下删除乱码文件和目录的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux下删除乱码文件和目录方法1方法2总结Linux下删除乱码文件和目录方法1使用ls -i命令找到文件或目录

SpringBoot+EasyExcel实现自定义复杂样式导入导出

《SpringBoot+EasyExcel实现自定义复杂样式导入导出》这篇文章主要为大家详细介绍了SpringBoot如何结果EasyExcel实现自定义复杂样式导入导出功能,文中的示例代码讲解详细,... 目录安装处理自定义导出复杂场景1、列不固定,动态列2、动态下拉3、自定义锁定行/列,添加密码4、合并

mybatis执行insert返回id实现详解

《mybatis执行insert返回id实现详解》MyBatis插入操作默认返回受影响行数,需通过useGeneratedKeys+keyProperty或selectKey获取主键ID,确保主键为自... 目录 两种方式获取自增 ID:1. ​​useGeneratedKeys+keyProperty(推

Spring Boot集成Druid实现数据源管理与监控的详细步骤

《SpringBoot集成Druid实现数据源管理与监控的详细步骤》本文介绍如何在SpringBoot项目中集成Druid数据库连接池,包括环境搭建、Maven依赖配置、SpringBoot配置文件... 目录1. 引言1.1 环境准备1.2 Druid介绍2. 配置Druid连接池3. 查看Druid监控

Linux在线解压jar包的实现方式

《Linux在线解压jar包的实现方式》:本文主要介绍Linux在线解压jar包的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux在线解压jar包解压 jar包的步骤总结Linux在线解压jar包在 Centos 中解压 jar 包可以使用 u