微信小程序页面上下滚动(附源码)

在这里插入图片描述
废话不多说直接上源码

wxml

<view class="container container-fill">
	<view class="scroll-fullpage" bindtouchstart="scrollTouchstart" bindtouchmove="scrollTouchmove" bindtouchend="scrollTouchend" style="transform:translateY(-{{scrollindex*100}}%);margin-top: {{margintop}}px">
		<view class="section section01 {{scrollindex==0?'active':''}}" style="background: #3399FF;">
			<text class="section-maintitle">页面1</text>
			<text class="section-subtitle">我的页面”1</text>
		</view>
		<view class="section section02 {{scrollindex==1?'active':''}}" style="background: #00CC66;">
			<text class="section-maintitle">页面2</text>
			<text class="section-subtitle">我的页面”2</text>
		</view>
		<view class="section section03 {{scrollindex==2?'active':''}}" style="background: #33CCCC;">
			<text class="section-maintitle">页面3</text>
			<text class="section-subtitle">我的页面”3</text>
		</view>
		<view class="section section04 {{scrollindex==3?'active':''}}" style="background: #6699FF;">
			<text class="section-maintitle">页面4</text>
			<text class="section-subtitle">我的页面”4</text>
		</view>
		<view class="section section05 {{scrollindex==4?'active':''}}" style="background: #9966FF;">
			<text class="section-maintitle">无缝对接双创服5</text>
			<text class="section-subtitle">我的页面”5</text>
		</view>
	</view>
</view>

js

Page({
  data: {
    scrollindex:0,  //当前页面的索引值
    totalnum:5,  //总共页面数
    starty:0,  //开始的位置x
    endy:0, //结束的位置y
    critical: 100, //触发翻页的临界值
    margintop:0,  //滑动下拉距离
  },
  onLoad: function () {
  },
  scrollTouchstart:function(e){
    let py = e.touches[0].pageY;
    this.setData({
      starty: py
    })
  },
  scrollTouchmove:function(e){
    let py = e.touches[0].pageY;
    let d = this.data;
    this.setData({
      endy: py,
    })
    if(py-d.starty<100 && py-d.starty>-100){    
      this.setData({
        margintop: py - d.starty
      })
    }
  },
  scrollTouchend:function(e){
    let d = this.data;
    if(d.endy-d.starty >100 && d.scrollindex>0){
      this.setData({
        scrollindex: d.scrollindex-1
      })
    }else if(d.endy-d.starty <-100 && d.scrollindex<this.data.totalnum-1){
      this.setData({
        scrollindex: d.scrollindex+1
      })
    }
    this.setData({
        starty:0,
        endy:0,
        margintop:0
    })
  },
})

wxss

.container-fill{
	height: 100%;
	overflow: hidden;
}
.scroll-fullpage{
	height: 100%;
	transition: all 0.3s;
}
.section{
	height: 100%;
}
.section-maintitle{
	display: block;
	text-align: center;
	font-size: 50rpx;
	color: #fff;
	font-weight: bold;
	letter-spacing: 10rpx;
	padding-top: 140rpx;
}
.section-subtitle{
	display: block;
	text-align: center;
	font-size: 40rpx;
	color: #fff;
	font-weight: bold;
	letter-spacing: 10rpx;
}
.active .section-maintitle,
.active .section-subtitle{
	animation: mymove 0.8s;
}
@keyframes mymove{
	from {
		transform: translateY(-400rpx) scale(0.5) rotateY(90deg);
	}
	to {
		transform: translateY(0) scale(1) rotateY(0);
	}
}

猜你喜欢

转载自blog.csdn.net/qq_42363090/article/details/93210799