小程序页面上下滚动效果

微信   2024-12-28 10:24   97   0  

8727_t3fi_6235.gif

index.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>


index.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
  })
  },
 })


index.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);
  }
 }


来源:https://www.jb51.net/article/165407.htm

博客评论
还没有人评论,赶紧抢个沙发~
发表评论
说明:请文明发言,共建和谐网络,您的个人信息不会被公开显示。