微信小程序侧边栏滑动特效(左右滑动)

侧边栏滑动是很常见的功能,但是小程序出来不久,很多特效还没有成熟案例,只能原生重写,所以今天为大家带来4个漂亮的侧边栏特效~~

侧边栏特效一

先看效果:

wxml:

<!--page/one/index.wxml-->
<view class="page">
  <view class="page-bottom">
    <view class="page-content">
      <view class="wc">
        <text>第一个item1</text>
      </view>
      <view class="wc">
        <text>第二个item2</text>
      </view>
      <view class="wc">
        <text>第三个item3</text>
      </view>
      <view class="wc">
        <text>第四个item4</text>
      </view>
    </view>
  </view>
  <view class="page-top {{open ? 'c-state1' : ''}}">
    <image bindtap="tap_ch" src="../../images/btn.png"></image>
  </view>
</view> 

搭建上下两层界面

写一段css3的右移动画样式 .c-state1

wxss:

.c-state1{
 transform: rotate(0deg) scale(1) translate(75%,0%);
 -webkit-transform: rotate(0deg) scale(1) translate(75%,0%);
} 

点击按钮,添加样式.c-state1

再点击,移除样式.c-state1

侧边栏特效二

先看效果:

滑动且屏幕缩小

wxss:

.c-state2{
 transform: rotate(0deg) scale(.8) translate(75%,0%);
 -webkit-transform: rotate(0deg) scale(.8) translate(75%,0%);
}
.c-state2{
 transform: rotate(0deg) scale(.8) translate(75%,0%);
 -webkit-transform: rotate(0deg) scale(.8) translate(75%,0%);
} 

wxml代码和特效一相同

.c-state2与.c-state1唯一不同在于scale值

js代码:

Page({
 data:{
  open : false
 },
 tap_ch: function(e){
  if(this.data.open){
   this.setData({
    open : false
   });
  }else{
   this.setData({
    open : true
   });
  }
 }
}) 
Page({
 data:{
  open : false
 },
 tap_ch: function(e){
  if(this.data.open){
   this.setData({
    open : false
   });
  }else{
   this.setData({
    open : true
   });
  }
 }
}) 

代码很简单,就是通过open值控制view对类的选取

侧边栏特效三

先看效果:

与特效二不同在于,不仅可以点击按钮触发侧滑,还可以拖动主界面触发侧滑特效

js代码:

tap_start:function(e){
  // touchstart事件
  this.data.mark = this.data.newmark = e.touches[0].pageX;
},
tap_drag: function(e){
  // touchmove事件
  /*
   * 手指从左向右移动
   * @newmark是指移动的最新点的x轴坐标 , @mark是指原点x轴坐标
   */
  this.data.newmark = e.touches[0].pageX;
  if(this.data.mark < this.data.newmark){
   this.istoright = true;
  }
  /*
   * 手指从右向左移动
   * @newmark是指移动的最新点的x轴坐标 , @mark是指原点x轴坐标
   */
  if(this.data.mark > this.data.newmark){
   this.istoright = false;
  }
  this.data.mark = this.data.newmark;
},
tap_end: function(e){
  // touchend事件
  this.data.mark = 0;
  this.data.newmark = 0;
  if(this.istoright){
   this.setData({
    open : true
   });
  }else{
   this.setData({
    open : false
   });
  }
} 
tap_start:function(e){
  // touchstart事件
  this.data.mark = this.data.newmark = e.touches[0].pageX;
},
tap_drag: function(e){
  // touchmove事件
  /*
   * 手指从左向右移动
   * @newmark是指移动的最新点的x轴坐标 , @mark是指原点x轴坐标
   */
  this.data.newmark = e.touches[0].pageX;
  if(this.data.mark < this.data.newmark){
   this.istoright = true;
  }
  /*
   * 手指从右向左移动
   * @newmark是指移动的最新点的x轴坐标 , @mark是指原点x轴坐标
   */
  if(this.data.mark > this.data.newmark){
   this.istoright = false;
  }
  this.data.mark = this.data.newmark;
},
tap_end: function(e){
  // touchend事件
  this.data.mark = 0;
  this.data.newmark = 0;
  if(this.istoright){
   this.setData({
    open : true
   });
  }else{
   this.setData({
    open : false
   });
  }
} 

tap_drag中判断手势是从左到右,或者从右向左

tap_end表示手势抬起,如果是从左到右,则触发从左到右的滑动

tap_end表示手势抬起,如果是从右到左,则触发从右到左的滑动

侧边栏特效四

先看效果:

此特效会随着手势滑动而滑动;如果松手时候不到屏宽的20%,那么会自动还原;如果松手时候超过20%,那么会向右滑动~~

此效果很复杂,我们将其拆分为多个步骤来分析~

1)屏幕随着手势动而动

先看效果:

JS代码:

this.setData({
  translate: 'transform: translateX('+(this.data.newmark - this.data.startmark)+'px)'
})
[javascript] view plain copy 在CODE上查看代码片派生到我的代码片
this.setData({
  translate: 'transform: translateX('+(this.data.newmark - this.data.startmark)+'px)'
})

这句是关键,很好理解,就是用js控制浅蓝色屏幕translateX的值,这样手势不断左右滑动,屏幕也就跟着手势慢慢滑动了。

2)弹动效果

先看效果:

拖动屏幕不足屏宽20%,还原默认状态;超过20%,滑动到最右侧~~

JS代码:

if(x < 20%){
   this.setData({
     translate: 'transform: translateX(0px)'
   })
}else{
   this.setData({
     translate: 'transform: translateX('+this.data.windowWidth*0.75+'px)'
   })
}
[javascript] view plain copy 在CODE上查看代码片派生到我的代码片
if(x < 20%){
   this.setData({
     translate: 'transform: translateX(0px)'
   })
}else{
   this.setData({
     translate: 'transform: translateX('+this.data.windowWidth*0.75+'px)'
   })
}

小于20%,让translateX(0px)则屏幕还原;大于20%,tanslateX(75%)则屏幕右移到屏幕的75%处。

(0)

相关推荐

  • 微信小程序 监听手势滑动切换页面实例详解

    微信小程序 监听手势滑动切换页面实例详解 1.对应的xml里写上手势开始.滑动.结束的监听: <view class="touch" bindtouchstart="touchStart" bindtouchmove="touchMove" bindtouchend="touchEnd" ></view> 2.js: var touchDot = 0;//触摸时的原点 var time = 0;// 时

  • 微信小程序 向左滑动删除功能的实现

    微信小程序 向左滑动删除功能的实现 实现效果图: 实现代码: 1.wxml touch-item元素绑定了bindtouchstart.bindtouchmove事件 <view class="container"> <view class="touch-item {{item.isTouchMove ? 'touch-move-active' : ''}}" data-index="{{index}}" bindtouchst

  • 微信小程序图片横向左右滑动案例

    本文实例为大家分享了微信小程序图片左右滑动的具体代码,供大家参考,具体内容如下 图片左右滑动效果图: wxml代码: <scroll-view scroll-x="true"> <view class="uploadWrap" scroll-x="true"> <view class="upload_Item"> <image class="upload_Item_img&q

  • 微信小程序 两种滑动方式(横向滑动,竖向滑动)详细及实例代码

     微信小程序 滑动方式 竖向滑动: <scroll-view scroll-y="true" style="height: 200rpx;"> <view style="background: red; width: 200px; height: 100px; display: inline-block" ></view> <view style="background: green; widt

  • 微信小程序页面滑动屏幕加载数据效果

    滑动屏幕加载数据是任何小程序中都会用到的功能,本文我就将这个功能整理给大家,希望对大家有意.我们先看看效果图: 创建目录 首先我们现在项目中创建资讯目录,以下是我自己创建的目录,大家可以根据自己的需求创建.如图所示: 创建lists.js文件 以下是lists.js代码 var app = getApp() Page({ data: { newsList: [], lastid: 0, toastHidden: true, confirmHidden: true, isfrist: 1, loa

  • 微信小程序模板之分页滑动栏

    本文实例为大家分享了微信小程序分页滑动栏的具体代码,供大家参考,具体内容如下 功能: 1.分页栏与滑动视图绑定 2.点击分页栏自动滑动到对应视图 3.滑动的到视图对应分页栏自动显示选中样式 效果图 上代码 wxml <view class="tapNav"> <view class="{{tabArr.tabCurrentIndex==0?'active':''}}" data-index="0" bindtap="v

  • 详解微信小程序开发之下拉刷新 上拉加载

    微信小程序中的下拉刷新,上拉加载的功能很常见,目前我知道的有两种可行的方法,一是scroll-view,二是整个页面刷新.今天说说第一种,自己造轮子,难免有些瑕疵,日后慢慢完善. 上gif: 原理: scroll-view中有监听滑动的方法,这个跟Android类似.其中用到了滑动到顶部,滑动到底部的方法. 1.下拉刷新,在滑动到顶部时,bindscrolltoupper被调用,根据自己的业务逻辑请求即可.我的demo只是随机换了个关键字. 2.上拉加载,在滑动到底部时,bindscrollto

  • 微信小程序 详解下拉加载与上拉刷新实现方法

    微信小程序下拉刷新上拉加载的两种实现方法 实现效果图: 方法一:onPullDownRefresh和onReachBottom方法实现小程序下拉加载和上拉刷新 首先要在json文件里设置window属性             属性   类型                           描述 enablePullDownRefresh Boolean 是否开启下拉刷新,详见页面相关事件处理函数. 设置js里onPullDownRefresh和onReachBottom方法 属性    类

  • 微信小程序-横向滑动scroll-view隐藏滚动条

    wxml <scroll-view class="recommend_scroll_x_box" scroll-x="true"> <view class="recommend_hot_box" wx:for="{{hotList}}"> <image src="{{item.pic}}" class="recommend_hot_image"><

  • 微信小程序左右滑动切换页面详解及实例代码

    微信小程序--左右滑动切换页面事件 微信小程序的左右滑动触屏事件,主要有三个事件:touchstart,touchmove,touchend. 这三个事件最重要的属性是pageX和pageY,表示X,Y坐标. touchstart在触摸开始时触发事件; touchend在触摸结束时触发事件; touchmove触摸的过程中不断激发这个事件; 这三个事件都有一个timeStamp的属性,查看timeStamp属性,可以看到顺序是touchstart => touchmove=> touchmov

随机推荐