当前位置: 首页 > news >正文

小程序使用this.animate实现3维动画切换

小程序使用this.animate实现3维动画切换

这里以三张图片为例
话不多说,直接上代码

wxml

<view class="container"><view class="carousel" id="carousel_id"><view class="box" wx:for="{{items}}" wx:for-item="item" wx:for-index="index" wx:key="index" style="display: flex;flex-direction: column;transform: rotateY({{index * -120}}deg) translateZ({{translateZ}});"><image class="DoorLock" src="{{item.pic}}" /></view></view>
</view><button type="primary" bindtap="play" style="margin-top: 200rpx;">切换</button>

js


Page({data: {translateZ: '0px',rotateY: 0,items: [{ "name": "酒杏鲍菇", "pic": "https://api.jisuapi.com/recipe/upload/20160719/120829_70383.jpg" },{ "name": "醋黄瓜丝", "pic": "https://api.jisuapi.com/recipe/upload/20160719/120712_61817.jpg" },{ "name": "式柠檬蒸鲈鱼", "pic": "https://api.jisuapi.com/recipe/upload/20160719/115500_14721.jpg" },]},onLoad(options) {const that = this;wx.getSystemInfo({success: (res) => {that.setData({translateZ: (res.windowWidth / 2 - 20) + 'px'});}});console.log('translateZ的值为:' + this.data.translateZ)},play() {let that = thisthis.animate('#carousel_id', [{ ease: 'ease', rotateY: this.data.rotateY },{ ease: 'ease', rotateY: this.data.rotateY+120 }], 500, function () {let rotateY = that.data.rotateY + 120rotateY = rotateY == 360 ? 0 : rotateYthat.setData({rotateY: rotateY})console.log('当前rotateY值为:' + that.data.rotateY)});},
});

wxss

.container {margin: 20rpx 300rpx;width: 70px;height: 40px;position: relative;perspective: 1000px;-webkit-perspective: 1500px;
}.carousel {width: 100%;height: 100%;position: absolute;transform-style: preserve-3d;-webkit-transform-style: preserve-3d;/* animation: rotation 10s infinite linear;-webkit-animation: rotation 10s infinite linear; */
}.carousel:hover {animation-play-state: paused;-webkit-animation-play-state: paused;
}.carousel view {display: block;position: absolute;width: 70px;height: 70px;/* left: 10px; */top: 10px;background: #2262E6;overflow: hidden;border: solid 2px #07C160;
}.box image {filter: grayscale(0);cursor: pointer;transition: all 0.3s ease 0s;width: 100%;height: 100%;
}.box image:hover {filter: grayscale(0);-webkit-filter: grayscale(0);transform: scale(1, 1);-webkit-transform: scale(1, 1);
}@keyframes rotation {from {transform: rotateY(0deg);}to {transform: rotateY(360deg);}
}.DoorLock {position: fixed;opacity: 0.9;height: 70px;width: 70px;/* margin-left: 80rpx; */margin-top: -40px;justify-content: center;/* background-color: greenyellow; */
}

说明

1.点击切换实现3维切换
2.每次点击旋转120度,也就是一圈的三分之一,并且每次会继承上次旋转的角度,不然再次点击时回复原位置
3.rotateY表示每个图片之间的位置角度,这里将三张图片按idnex均匀分布

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • c语言 图片.bmp读写示例
  • 自动化数据采集:Lua爬虫与JSON解析的深度整合
  • 头狼择校小程序
  • PythonStudio 控件使用常用方式(二十一)TTrayIcon
  • 生物制药及化工行业ERP解决方案
  • 汽车免拆诊断案例 | 2010款劳斯莱斯古斯特车中央信息显示屏提示传动系统故障
  • 电动自行车出海黑马Avento独立站拆解(上)丨出海笔记
  • 2024.8.12
  • vue2前端阿里云oss服务端签名直传
  • 非线性RCD负载:电力系统的智能管理
  • 19116 丑数
  • 数据结构与算法 - B树
  • Django基础知识
  • SpringBoot基础(一):快速入门
  • 【对抗性训练】FGM、AWP
  • 【402天】跃迁之路——程序员高效学习方法论探索系列(实验阶段159-2018.03.14)...
  • ABAP的include关键字,Java的import, C的include和C4C ABSL 的import比较
  • android百种动画侧滑库、步骤视图、TextView效果、社交、搜房、K线图等源码
  • Android框架之Volley
  • ES6, React, Redux, Webpack写的一个爬 GitHub 的网页
  • HTTP中GET与POST的区别 99%的错误认识
  • Java,console输出实时的转向GUI textbox
  • jdbc就是这么简单
  • mysql中InnoDB引擎中页的概念
  • rc-form之最单纯情况
  • vue2.0一起在懵逼的海洋里越陷越深(四)
  • 从零开始的webpack生活-0x009:FilesLoader装载文件
  • 对JS继承的一点思考
  • 开放才能进步!Angular和Wijmo一起走过的日子
  • 前嗅ForeSpider采集配置界面介绍
  • 如何在 Tornado 中实现 Middleware
  • 消息队列系列二(IOT中消息队列的应用)
  • 学习JavaScript数据结构与算法 — 树
  • 用 Swift 编写面向协议的视图
  • 自制字幕遮挡器
  • 深度学习之轻量级神经网络在TWS蓝牙音频处理器上的部署
  • linux 淘宝开源监控工具tsar
  • Nginx惊现漏洞 百万网站面临“拖库”风险
  • ​ubuntu下安装kvm虚拟机
  • ​插件化DPI在商用WIFI中的价值
  • ​马来语翻译中文去哪比较好?
  • ​无人机石油管道巡检方案新亮点:灵活准确又高效
  • #565. 查找之大编号
  • #每日一题合集#牛客JZ23-JZ33
  • #我与Java虚拟机的故事#连载06:收获颇多的经典之作
  • $$$$GB2312-80区位编码表$$$$
  • $.ajax中的eval及dataType
  • (1)(1.13) SiK无线电高级配置(六)
  • (1综述)从零开始的嵌入式图像图像处理(PI+QT+OpenCV)实战演练
  • (2)STL算法之元素计数
  • (20050108)又读《平凡的世界》
  • (done) ROC曲线 和 AUC值 分别是什么?
  • (定时器/计数器)中断系统(详解与使用)
  • (二)WCF的Binding模型
  • (过滤器)Filter和(监听器)listener