微信小程序实现卡片层叠滑动效果
网络编程 2021-07-04 15:50www.168986.cn编程入门
这篇文章主要为大家详细介绍了微信小程序实现卡片层叠滑动效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
本文实例为大家分享了微信小程序之卡片层叠滑动效果的具体代码,供大家参考,具体内容如下
代码
js
// index/gun/jsSwiper2/jsSwiper2.js Page({ / 页面的初始数据 / data: { startX: 0, endX: 0, iCenter: 3, datas: [{ id: 1, zIndex: 2, opacity: 0.2, left: 40, iamge: "../../images/1.jpg", animation: null }, { id: 2, zIndex: 4, opacity: 0.4, left: 80, iamge: "../../images/2.jpg", animation: null }, { id: 3, zIndex: 6, opacity: 0.6, left: 120, iamge: "../../images/3.jpg", animation: null }, { id: 4, zIndex: 8, opacity: 1, left: 160, iamge: "../../images/4.jpg", animation: null }, { id: 5, zIndex: 6, opacity: 0.6, left: 200, iamge: "../../images/5.jpg", animation: null }, { id: 6, zIndex: 4, opacity: 0.4, left: 240, iamge: "../../images/6.jpg", animation: null }, { id: 7, zIndex: 2, opacity: 0.2, left: 280, iamge: "../../images/7.jpg", animation: null }, ], order: [] }, / 生命周期函数--监听页面加载 / onLoad: function (options) { this.__set__(); this.move(); }, / 生命周期函数--监听页面初次渲染完成 / onReady: function () { }, / 生命周期函数--监听页面显示 / onShow: function () { }, / 生命周期函数--监听页面隐藏 / onHide: function () { }, / 生命周期函数--监听页面卸载 / onUnload: function () { }, / 页面相关事件处理函数--监听用户下拉动作 / onPullDownRefresh: function () { }, / 页面上拉触底事件的处理函数 / onReachBottom: function () { }, / 用户点击右上角分享 / onShareAppMessage: function () { }, move: function () { var datas = this.data.datas; /图片分布/ for (var i = 0; i < datas.length; i++) { var data = datas[i]; var animation = wx.createAnimation({ duration: 200 }); animation.translateX(data.left).step(); this.setData({ ["datas[" + i + "].animation"]: animation.export(), ["datas[" + i + "].zIndex"]: data.zIndex, ["datas[" + i + "].opacity"]: data.opacity, }) } }, /左箭头 / left: function () { // var last = this.data.datas.pop(); //获取数组的一个 this.data.datas.unshift(last);//放到数组的第一个 var orderFirst = this.data.order.shift(); this.data.order.push(orderFirst); this.move(); }, / / right: function () { var first = this.data.datas.shift(); //获取数组的第一个 this.data.datas.push(first);//放到数组的一个位置 var orderLast = this.data.order.pop(); this.data.order.unshift(orderLast); this.move(); }, /点击某项 / choose: function (e) { var that = this; var id = e.currentTarget.dataset.id; var order = that.data.order; var index = 0; for (var i = 0; i < order.length; i++) { if (id == order[i]) { index = i; break; } } if (index < that.data.iCenter) { for (var i = 0; i < that.data.iCenter - index; i++) { this.data.datas.push(this.data.datas.shift()); //获取第一个放到一个 this.data.order.unshift(this.data.order.pop()); // this.right() } } else if (index > that.data.iCenter) { for (var i = 0; i < index - that.data.iCenter; i++) { this.data.datas.unshift(this.data.datas.pop()); //获取一个放到第一个 this.data.order.push(this.data.order.shift()); // this.left(); } } this.move(); }, /新的排列复制到新的数组中 / __set__: function () { var that = this; var order = that.data.order; var datas = that.data.datas; for (var i = 0; i < datas.length; i++) { that.setData({ ["order[" + i + "]"]: datas[i].id }) } }, //手指触发开始移动 moveStart: function (e) { console.log(e); var startX = e.changedTouches[0].pageX; this.setData({ startX: startX }); }, //手指触摸后移动完成触发事件 moveItem: function (e) { console.log(e); var that = this; var endX = e.changedTouches[0].pageX; this.setData({ endX: endX }); //计算手指触摸偏移剧距离 var moveX = this.data.startX - this.data.endX; //向左移动 if (moveX > 20) { this.left(); } if (moveX < -20) { this.right(); } }, })
wxml
<view class="teachers_banner"> <view class="container clearfix teachers_b"> <view class="slide" id="slide" bindtouchstart='moveStart' bindtouchend='moveItem'> <block wx:for="{{datas}}"> <li animation="{{item.animation}}" style="z-index: {{item.zIndex}} ;opacity:{{item.opacity}};" bindtap="choose" data-id="{{item.id}}"> <image src="{{item.iamge}}"></image> </li> </block> </view> </view> </view>
wxss
.teachers_banner { width: 100%; height: 650px; background-size: cover; position: relative; overflow: hidden; } .teachers_b { position: relative; margin-: 80px; } #slide { margin: 0 auto; width: 100%; height: 350px; position: relative; } image { width: 400rpx; height: 550rpx; } #slide li { position: absolute; width: 400rpx; display: -webkit-box; display: -webkit-flex; display: flex; align-items: flex-start; -webkit-box-align: flex-start; -webkit-align-items: flex-start; overflow: hidden; box-shadow: 0 0 20px #1d374d; } #slide li img { width: 100%; height: 100%; } .slide_right { padding: 40px; -webkit-box-flex: 1; -webkit-flex: 1; flex: 1; min-width: 0; } .slide_right dl { padding-: 10px; } .arrow .prev, .arrow .next { position: absolute; width: 50px; : 38%; z-index: 9; font: 700 96px 'simsun'; opacity: 0.3; color: #fff; cursor: pointer; }
效果
1.左右滑动时,向相应方向移动一个卡片位置;
2.点击某一项时,将点击项位置移动到中间位置;
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持狼蚁SEO。
上一篇:Vue多环境代理配置方法思路详解
下一篇:NodeJs 模仿SIP话机注册的方法
编程语言
- 如何快速学会编程 如何快速学会ug编程
- 免费学编程的app 推荐12个免费学编程的好网站
- 电脑怎么编程:电脑怎么编程网咯游戏菜单图标
- 如何写代码新手教学 如何写代码新手教学手机
- 基础编程入门教程视频 基础编程入门教程视频华
- 编程演示:编程演示浦丰投针过程
- 乐高编程加盟 乐高积木编程加盟
- 跟我学plc编程 plc编程自学入门视频教程
- ug编程成航林总 ug编程实战视频
- 孩子学编程的好处和坏处
- 初学者学编程该从哪里开始 新手学编程从哪里入
- 慢走丝编程 慢走丝编程难学吗
- 国内十强少儿编程机构 中国少儿编程机构十强有
- 成人计算机速成培训班 成人计算机速成培训班办
- 孩子学编程网上课程哪家好 儿童学编程比较好的
- 代码编程教学入门软件 代码编程教程