小程序轮播图_微信小程序层叠轮播图
效果展示
Demo代码
wxml
<view class="selection_cards" bindtouchstart="touchstart" bindtouchmove="touchmove" bindtouchend="touchend"> <view class="selection_cards_item" wx:for="{{list}}" wx:key="index" style="left:{{item.style.left}}px; z-index:{{item.style.zIndex}};transform:{{item.style.transform}};opacity:{{item.style.opacity}};transition:{{!isTouch?'0.1s':0}};background-image: url({{item.backimage}});"> view>view>
wxss
/*css*/.selection_cards{ width: 100%; height: 400rpx; position: relative; margin-top: 200px; z-index: 99;}
.selection_cards_item{ width: 194rpx;/*188*/ height:350rpx;/*340*/ background-size: 100%; /* overflow: hidden; */ border-radius: 16rpx; position: absolute; top: 0; color: white; font-size: 100rpx; box-sizing: border-box;}
js
Page({ data: { cardNumber: 7, indexArr: [-3, -2, -1, 0, 1, 2, 3], list: [], listArr: [], startPageX: 0, cardWidth: 0, screenWidth: 0, isTouch: false, }, onLoad() { let _this = this; _this.init(); }, /*层叠轮播图初始化*/ init: function () { let _this = this; wx.getSystemInfo({ success(res) { //获取屏幕的宽成功 let arr = []; let len = _this.data.cardNumber; let cardWidth = res.screenWidth / 750 * 194;
for (let i = 0; i let item = { option: 0, //自定义选项 left: (i * (cardWidth / 2)), scale: (3 - Math.abs(_this.data.indexArr[i])) * 0.4, zIndex: 3 - Math.abs(_this.data.indexArr[i]), style: { left: (i * (cardWidth / 2)), transition: 0, zIndex: 3 - Math.abs(_this.data.indexArr[i]), transform: "scale(" + ((3 - Math.abs(_this.data.indexArr[i])) * 0.4) + ")", opacity: (3 - Math.abs(_this.data.indexArr[i]) != 0) ? 1 : 0 }, backimage:"", } item.option = i; arr.push(item); } arr[0].backimage="https://ww2.sinaimg.cn/bmiddle/005SWChdly1g5q9gkj0nhj30u01rc167.jpg" arr[1].backimage="https://ww3.sinaimg.cn/bmiddle/005SWChdly1g5q9gk2lrjj30u01rcna4.jpg" arr[2].backimage="https://ww3.sinaimg.cn/bmiddle/005SWChdly1g5q9gjq3dij30u01rc14p.jpg" arr[3].backimage="https://ww2.sinaimg.cn/bmiddle/005SWChdly1g5q9ginahaj30u01rc49y.jpg" arr[4].backimage="https://ww4.sinaimg.cn/bmiddle/005SWChdly1g5q9gi6alkj30u01rc14q.jpg" arr[5].backimage="https://ww3.sinaimg.cn/bmiddle/005SWChdly1g5q9gho9hzj30u01rcalv.jpg" arr[6].backimage="https://ww3.sinaimg.cn/bmiddle/005SWChdly1g5q9ghakxfj30u01rcds3.jpg"
console.log(arr);
_this.setData({ screenWidth: res.screenWidth, cardWidth, list: arr, listArr: arr }) } }) }, /*触摸开始*/ touchstart(e) {
//console.log(e.changedTouches[0].pageX); this.setData({ startPageX: e.changedTouches[0].pageX, isTouch: true //开始触摸 });
}, /*触摸移动*/ touchmove(e) { let _this = this; let pageX = e.changedTouches[0].pageX; let move = pageX - _this.data.startPageX; //正数,向右滑动;负数,向左滑动 let list = JSON.parse(JSON.stringify(_this.data.list));
let len = list.length; //console.log(move); if (move > 0) { //向右滑
for (let i = 0; i list[i].style.left = list[i].left + ((move) * 0.52); if (_this.data.indexArr[i] 0) {
list[i].style.transform = "scale(" + (list[i].scale + (move * 0.005)) + ")"; list[i].style.zIndex = list[i].zIndex + 1; if (_this.data.indexArr[i] >= -3) { list[i].style.opacity = 1; } } else {
list[i].style.transform = "scale(" + (list[i].scale - (move * 0.005)) + ")"; list[i].style.zIndex = list[i].zIndex - 1; if (_this.data.indexArr[i] >= 2) { list[i].style.opacity = 0; } } } //检查是否,向右 if (list[2].style.left >= list[3].left) { let newArr = []; for (let i = 0; i let index = i; //当前将要变成哪一个坐标元素的位置 if (i + 1 != len) { index = i + 1; } else { //最后一个元素到第一个元素的位置 index = 0; } let current_option = list[i].option; // console.log('current_option',current_option); // console.log('list[i].option',list[i].option); let item = _this.data.listArr[index]; item.option = current_option; item.backimage=list[i].backimage newArr[index] = item; } // console.log('old', list); // console.log('new', newArr); list = newArr; _this.setData({ startPageX: pageX }); } _this.setData({ list })
} else { //向左滑 for (let i = 0; i list[i].style.left = list[i].left + ((move) * 0.52); if (_this.data.indexArr[i] <= 0) { list[i].style.transform = "scale(" + (list[i].scale - Math.abs(move * 0.005)) + ")"; list[i].style.zIndex = list[i].zIndex - 1; if (_this.data.indexArr[i] <= -2) { list[i].style.opacity = 0; }
} else { list[i].style.transform = "scale(" + (list[i].scale + Math.abs(move * 0.005)) + ")"; list[i].style.zIndex = list[i].zIndex + 1; if (_this.data.indexArr[i] >= 2) { list[i].style.opacity = 1; } } }
//检查,向左 if (list[3].style.left <= list[2].left) { let newArr = []; for (let i = 0; i let index = i; if (i == 0) { index = len - 1; } else { index = i - 1; }
let current_option = list[i].option; // console.log('current_option',current_option); // console.log('list[i].option',list[i].option); let item = _this.data.listArr[index]; item.option = current_option; item.backimage=list[i].backimage newArr[index] = item; } // console.log('old', list); // console.log('new', newArr); list = newArr; _this.setData({ startPageX: pageX }); }
_this.setData({ list })
} }, /*触摸结束*/ touchend(e) {
console.log('触摸结束'); let _this = this; let list = JSON.parse(JSON.stringify(_this.data.list)); let len = list.length; _this.setData({ isTouch: false //关闭触摸 }) if (list[2].style.left >= list[3].left||list[3].style.left <= list[2].left) { //console.log('翻牌了');
} else { //移动的距离不够 for (let i = 0; i list[i].style.left = list[i].left; list[i].style.zIndex = list[i].zIndex; list[i].style.transform = "scale(" + list[i].scale + ")"; list[i].style.opacity = (3 - Math.abs(_this.data.indexArr[i]) != 0) ? 1 : 0 } _this.setData({ list }) } }})
说明
union.com/article-6587-1.html
海轰在原教程基础上进行了改动
Demo代码已同步至微信小程序
留言区写留言|查看留言
小程序轮播图_微信小程序层叠轮播图相关推荐
- 微信小程序vue轮播图_微信小程序使用swiper组件实现类3D轮播图
Swiper是纯javascript打造的滑动特效插件,面向手机.平板电脑等移动终端. Swiper能实现触屏焦点图.触屏Tab切换.触屏多图切换等常用效果. Swiper开源.免费.稳定.使用简单. ...
- python天气查询小程序加背景图_微信小程序开发背景图显示功能
这两天开发微信小程序,在设置背景图片时,发现在wxss里面设置background-image:(url) 属性,不管是开发工具还是线上都无法显示.经过查资料发现,background-image只能 ...
- java小程序显示多种按钮_微信小程序 多行文本显示...+显示更多按钮和收起更多按钮功能...
看了很多帖子,但是效果都不是很好.还是找微信小程序官方文档,自己写比较方便.自己动手丰衣足食!话不多说,上代码! 先来个效果图 html {{item.text}} 查看更多 收起 wxss .box ...
- 小程序商店刷榜_微信小程序游戏跳一跳刷榜原理解析!
最近微信出了一个"跳一跳"的小游戏,这个游戏其实在之前有手机端版本,无奈微信借助强大的用户把这游戏又拿起来弄火了,而且通过最新版的微信可以看出,微信已经开始重视小程序的入口释放了, ...
- 微信小程序存在的风险_微信小程序开发技术风险存在,如何规避是重点
微信小程序开发技术风险存在,如何规避是重点 微信小程序自上线以来已经历经三年的时间,不断推陈出新,推展业务,如今已形成了一定规模和影响力,线上购物.在线点餐.预订服务.便捷出行.小游戏等多种多样的小程 ...
- 微信小程序存在的风险_微信小程序存在哪些风险
微信小程序存在哪些风险?之前一直在给大家爱关于微信小程序的各种好处,但是它其实也是存在一定的风险的,今天小编就来给大家讲一下微信小程序都存在哪些风险. 由于微信主程序会通过 JS 接口向小程序暴露规定 ...
- 微信小程序超级占内存_微信小程序占用内存小,用户再也不用担心内存不足问题了...
内存占用小,微信小程序,让用户再也不用担心小程序不足内存问题了,时下,一站式支持常用APP(手机应用软件)的微信小程序受到市民青睐. 微信小程序,是一种不需要下载安装即可使用的应用,它实现了应用&qu ...
- 小程序商店刷榜_微信小程序怎么通过“硬广”“软广”来运营引流?运营干货...
随着互联网的飞速发展,如今微信小程序已经成为家喻户晓的一款应用了,生活中随处可见的微信小程序成为了许多人日常生活中必不可少的应用.那么对于小程序商家来说营销策划方案显得格外重要,如果想要引入更多流量用 ...
- 小程序全局悬浮窗_微信小程序悬浮窗弹出怎么实现?
微信小程序悬浮窗弹出怎么实现?很多的微信小程序管理员会在微信小程序界面开发微信小程序悬浮窗弹出功能,接下来小编会为大家介绍微信小程序悬浮窗弹出关注实现的全部步骤哦. 微信小程序悬浮窗弹出怎么实现? 微 ...
- 微信小程序js数组初始化_微信小程序开发之改变data中数组或对象的某一属性值...
前言:在小程序的开发中,我们在view中便利data中数组或对象时,很多情况下需要在js中动态改变数组或者对象中某一香的属性值. 效果图: 我给大家总结了案例如下: wxml如下: {{item.we ...
最新文章
- 【计算机视觉】EmguCV学习笔记(4)分离颜色通道以及多通道图像混合
- [学习笔记] ES6的数组遍历方式 for, forEach,for...in, for...of
- ManualResetEvent用法
- python textwrap_[Python标准库]textwrap——格式化文本段落
- 【原】修改shm,oracle11g需要扩大共享内存
- 描述C,C++编译和链接过程
- 利用DiskGenius对硬盘无损分区大小调整+无损分割新分区。
- linux中文件权限为d-rwxr-xr,Linux基础知识之文件权限详解
- Excel VBA——两种获取使用最大行数的方法
- [Codeforces Round #627]1324D - Pair of Topics[二分]
- linux fdisk 挂盘
- 多周期CPU设计(verilog)
- 解码中的AnnexB和avcC两种分割数据方式
- 23个shell实用脚本
- 简单四步抓取腾讯视频MP4文件
- ssh 用户名密码登录
- 计算机学院实验员岗位基本知识,实验室人员职责
- 学习笔记----SLAM的概论与架构
- Windows7安装IE11步骤和中文安装包超简单
- Python入门基础学习笔记