小程序?qū)崿F(xiàn)層疊卡片滑動(dòng)效果
小程序?qū)盈B卡片滑動(dòng)效果,供大家參考,具體內(nèi)容如下
效果圖

wxml
<!-- 輪播wxml代碼 -->
<view class="teachers_banner">
<view class="lunbo_center clearfix teachers_b">
<view class="slide" id="slide" bindtouchstart='moveStart' bindtouchend='moveItem'>
<ul>
<block wx:for="{{datas}}" wx:key>
<li animation="{{item.animation}}" style="z-index: {{item.zIndex}} ;opacity:{{item.opacity}};"
bindtap="choose" data-id="{{item.id}}">
<image src="{{item.iamge}}" />
</li>
</block>
</ul>
</view>
</view>
</view>
wxss
/*輪播圖片*/
.lunbo_center {
display: flex;
flex-direction: column;
align-items: center;
justify-content: space-between;
padding: 50rpx 0;
box-sizing: border-box;
}
.teachers_b {
position: relative;
}
#slide {
margin: 0 auto;
width: 100%;
height: 160px;
position: relative;
}
#slide li {
position: absolute;
width: 600rpx;
height: 300rpx;
display: -webkit-box;
display: -webkit-flex;
display: flex;
align-items: flex-start;
-webkit-box-align: flex-start;
-webkit-align-items: flex-start;
background: #fff;
overflow: hidden;
box-shadow: 0 0 20px #1d374d;
}
#slide li image {
width: 100%;
height: 100%;
}
.slide_left {
width: 240px;
}
.slide_right {
padding: 40px;
-webkit-box-flex: 1;
-webkit-flex: 1;
flex: 1;
min-width: 0;
}
.slide_right h3 {
font: 400 30px/18px "Microsoft Yahei";
color: #222;
}
.slide_right h3 span {
display: inline-block;
margin-left: 10px;
font: 400 14px/36px "Microsoft Yahei";
color: #555;
}
.slide_right p {
padding: 20px 0 30px;
color: #555;
font: 400 14px/24px "Microsoft Yahei";
border-bottom: 1px solid #dbdbdb;
}
.slide_right dl {
padding-top: 30px;
}
.slide_right dd {
/* float: left; */
width: 33.3%;
color: #777;
font: 400 12px/24px "Microsoft Yahei";
}
.slide_right dd h3 {
color: #ff9000;
margin-bottom: 20px;
}
.arrow {
display: none;
}
.arrow .prev, .arrow .next {
position: absolute;
width: 64px;
top: 38%;
z-index: 9;
font: 700 96px 'simsun';
opacity: 0.3;
color: #fff;
cursor: pointer;
}
.arrow .prev {
left: -220px;
}
.arrow .next {
right: -220px;
}
.arrow .prev:hover, .arrow .next:hover {
color: #00a0e9;
opacity: 0.7;
}
js
// js代碼
Page({
/**
* 頁(yè)面的初始數(shù)據(jù)
*/
data: {
startX: 0,
endX: 0,
iCenter: 3,
datas: [{
id: 1,
zIndex: 2,
opacity: 0.2,
left: 10,
iamge: "../../icon/lunbo2.jpg",
animation: null
},
{
id: 2,
zIndex: 4,
opacity: 0.4,
left: 20,
iamge: "../../icon/lunbo3.jpg",
animation: null
},
{
id: 3,
zIndex: 6,
opacity: 0.6,
left: 30,
iamge: "../../icon/lunbo4.jpg",
animation: null
},
{
id: 4,
zIndex: 8,
opacity: 1,
left: 40,
iamge: "../../icon/lunbo1.jpg",
animation: null
},
{
id: 5,
zIndex: 6,
opacity: 0.6,
left: 50,
iamge: "../../icon/lunbo2.jpg",
animation: null
},
{
id: 6,
zIndex: 4,
opacity: 0.4,
left: 60,
iamge: "../../icon/lunbo3.jpg",
animation: null
} ,
{
id: 7,
zIndex: 2,
opacity: 0.2,
left: 70,
iamge: "../../icon/lunbo1.jpg",
animation: null
}
],
order: []
},
/**
* 生命周期函數(shù)--監(jiān)聽(tīng)頁(yè)面加載
*/
onLoad: function (options) {
this.__set__();
this.move();
},
move: function () {
var datas = this.data.datas;
/*圖片分布*/
for (var i = 0; i < datas.length; i++) {
var data = datas[i];
var animation = wx.createAnimation({
duration: 100
});
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(); //獲取數(shù)組的最后一個(gè)
this.data.datas.unshift(last);//放到數(shù)組的第一個(gè)
var orderFirst = this.data.order.shift();
this.data.order.push(orderFirst);
this.move();
},
/** */
right: function () {
var first = this.data.datas.shift(); //獲取數(shù)組的第一個(gè)
this.data.datas.push(first);//放到數(shù)組的最后一個(gè)位置
var orderLast = this.data.order.pop();
this.data.order.unshift(orderLast);
this.move();
},
/**點(diǎn)擊某項(xiàng) */
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()); //獲取第一個(gè)放到最后一個(gè)
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()); //獲取最后一個(gè)放到第一個(gè)
this.data.order.push(this.data.order.shift());
// this.left();
}
}
this.move();
},
/**新的排列復(fù)制到新的數(shù)組中 */
__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
})
}
},
//手指觸發(fā)開(kāi)始移動(dòng)
moveStart: function (e) {
console.log(e);
var startX = e.changedTouches[0].pageX;
this.setData({
startX: startX
});
},
//手指觸摸后移動(dòng)完成觸發(fā)事件
moveItem: function (e) {
console.log(e);
var that = this;
var endX = e.changedTouches[0].pageX;
this.setData({
endX: endX
});
//計(jì)算手指觸摸偏移劇距離
var moveX = this.data.startX - this.data.endX;
//向左移動(dòng)
if (moveX > 20) {
this.left();
}
if (moveX < -20) {
this.right();
}
},
})
歡迎參考!
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
JavaScript簡(jiǎn)單編程實(shí)例學(xué)習(xí)
在本篇文章里小編給大家整理的是關(guān)于JavaScript簡(jiǎn)單編程實(shí)例學(xué)習(xí)內(nèi)容,有興趣的朋友們可以參考下。2020-02-02
JavaScript高級(jí)程序設(shè)計(jì) 閱讀筆記(二十一) JavaScript中的XML
雖然XML和DOM已經(jīng)變成Web開(kāi)發(fā)的重要組成部分,但目前僅IE跟Mozilla支持客戶(hù)端的XML處理2012-09-09
javascript使用正則獲取url上的某個(gè)參數(shù)
使用indexOf取得?之后的參數(shù),以&使split進(jìn)行分割成數(shù)組,下面展示了一個(gè)從url上獲取名為MenuCode參數(shù)的過(guò)程2014-09-09
JavaScript函數(shù)中的防抖與節(jié)流原生實(shí)現(xiàn)及第三方庫(kù)的使用
當(dāng)你頻繁的觸發(fā)用戶(hù)界面時(shí),會(huì)不停的觸發(fā)事件處理函數(shù),可能導(dǎo)致界面卡頓,瀏覽器奔潰,頁(yè)面空白等情況,而解決這一問(wèn)題的,正是函數(shù)節(jié)流與函數(shù)防抖,所以本文將給大家介紹一下JavaScript函數(shù)中的防抖與節(jié)流原生實(shí)現(xiàn)及第三方庫(kù)的使用,需要的朋友可以參考下2023-10-10
使用JavaScript動(dòng)態(tài)設(shè)置樣式實(shí)現(xiàn)代碼(2)
使用onmouseover和onmouseout事件實(shí)現(xiàn)不同的效果而且是使用js動(dòng)態(tài)實(shí)現(xiàn),本文有利于鞏固你js與css方面的知識(shí),感興趣的你可以了解下哦,希望本文對(duì)你有所幫助2013-01-01
使用js完成節(jié)點(diǎn)的增刪改復(fù)制等的操作
本文為大家詳細(xì)介紹下使用js完成節(jié)點(diǎn)的增刪改復(fù)制等的操作,具體的實(shí)現(xiàn)如下,感興趣的朋友可以參考下2014-01-01

