原文链接:https://mp.weixin.qq.com/s/7CM18izpZqf0oc0D75IGmQ

1

概述

在手机应用的开发中侧边栏滑动是很常见的功能,当然在小程序中也不会例外,很多特效还没有成熟案例,只能原生重写,所以今天在网上为大家收集整理来几个非常漂亮的侧边栏特效。今天我们就分享这样的小教程。希望对大家有所帮助。

快去拿个小板凳,坐等更多更新

注意:如若需要请联系微信geekxz

2

wxml

 1<!--page/one/index.wxml-->
2<view class="page">
3    <!-- 侧边内容 -->
4    <view class="page-bottom">
5        <view class="page-content">
6            <view  class="wc">
7                <text>第一个item1</text>
8            </view>
9            <view  class="wc">
10                <text>第二个item2</text>
11            </view>
12            <view  class="wc">
13                <text>第三个item3</text>
14            </view>
15            <view  class="wc">
16                <text>第四个item4</text>
17            </view>
18        </view>
19    </view>
20    <!-- 主页内容 -->
21    <view bindtouchmove="tap_drag" bindtouchend="tap_end" bindtouchstart="tap_start" class="page-top" style="{{translate}}">
22        <image class="img-ico" bindtap="tap_ch" src="../../static/images/icon/btn.png"></image>
23    </view>
24</view>

3

js

  1// page/one/index.js
 2Page({
 3  data:{
 4    open : false,
 5    mark: 0,
 6    newmark: 0,
 7    startmark: 0,
 8    endmark: 0,
 9    windowWidth:  wx.getSystemInfoSync().windowWidth,
10    staus: 1,
11    translate: '',    
12  },
13  /**
14   * 生命周期函数--监听页面加载
15   */
16  onLoad: function (options) {
17  },
18  imageLoad: function () {
19    //bindload 图片加载的时候自动设定宽度  
20    this.setData({
21      imageWidth: wx.getSystemInfoSync().windowWidth ,
22      imageHeight: wx.getSystemInfoSync().windowHeight ,
23    })
24  },
25  tap_ch: function(e){
26    if(this.data.open){
27      this.setData({
28          translate: 'transform: translateX(0px)'
29      })
30      this.data.open = false;
31    }else{
32      this.setData({
33          translate: 'transform: translateX('+this.data.windowWidth*0.75+'px)'
34      })
35      this.data.open = true;
36    }
37  },
38  tap_start:function(e){
39    this.data.mark = this.data.newmark = e.touches[0].pageX;
40    if(this.data.staus == 1){
41      // staus = 1指默认状态
42      this.data.startmark = e.touches[0].pageX;
43    }else{
44      // staus = 2指屏幕滑动到右边的状态
45      this.data.startmark = e.touches[0].pageX;
46    }    
47  },
48  tap_drag: function(e){
49    /*
50     * 手指从左向右移动
51     * @newmark是指移动的最新点的x轴坐标 , @mark是指原点x轴坐标
52     */
53    this.data.newmark = e.touches[0].pageX;
54    if(this.data.mark < this.data.newmark ){
55      if(this.data.staus == 1){
56        if(this.data.windowWidth*0.75 > Math.abs(this.data.newmark - this.data.startmark)){
57          this.setData({
58            translate: 'transform: translateX('+(this.data.newmark - this.data.startmark)+'px)'
59          })
60        }
61      }      
62    }
63    /*
64     * 手指从右向左移动
65     * @newmark是指移动的最新点的x轴坐标 , @mark是指原点x轴坐标
66     */
67    if(this.data.mark > this.data.newmark  ){
68        if(this.data.staus == 1 && (this.data.newmark - this.data.startmark) > 0){
69          this.setData({
70            translate: 'transform: translateX('+(this.data.newmark - this.data.startmark)+'px)'
71          })
72        }else if(this.data.staus == 2 && this.data.startmark - this.data.newmark < this.data.windowWidth*0.75){
73          this.setData({
74            translate: 'transform: translateX('+(this.data.newmark + this.data.windowWidth*0.75  - this.data.startmark)+'px)'
75          })
76        }        
77    }
78    this.data.mark = this.data.newmark;  
79  },
80  tap_end: function(e){
81    if(this.data.staus == 1 && this.data.startmark < this.data.newmark){
82      if(Math.abs(this.data.newmark - this.data.startmark) < (this.data.windowWidth*0.2)){
83        this.setData({
84            translate: 'transform: translateX(0px)'
85        })
86        this.data.staus = 1;
87      }else{
88        this.setData({
89            translate: 'transform: translateX('+this.data.windowWidth*0.75+'px)'
90        })
91        this.data.staus = 2;
92      }
93    }else{
94      if(Math.abs(this.data.newmark - this.data.startmark) < (this.data.windowWidth*0.2)){
95        this.setData({
96            translate: 'transform: translateX('+this.data.windowWidth*0.75+'px)'
97        })
98        this.data.staus = 2;
99      }else{
100        this.setData({
101            translate: 'transform: translateX(0px)'
102        })
103        this.data.staus = 1;
104      }      
105    }
106    this.data.mark = 0;
107    this.data.newmark = 0;
108  }
109})

4   css

 1/**app.wxss**/
2page,.page {
3  height: 100%;
4  font-family: 'PingFang SC', 'Helvetica Neue', Helvetica, 'Droid Sans Fallback', 'Microsoft Yahei', sans-serif;
5}
6.page-bottom{
7  height: 100%;
8  width: 750rpx;
9  position: fixed;
10  background-color: #118fff;
11  z-index: 0;
12}
13.wc{
14  color: black;
15  padding: 30rpx 0 30rpx 40rpx;
16}
17.page-content{
18  padding-top: 300rpx;
19}
20.page-top{
21  height: 100%;
22  position: fixed;
23  width: 750rpx;
24  background-color: #fff;
25  z-index: 0;
26  transition: All 0.4s ease;
27  -webkit-transition: All 0.4s ease;
28}
29.page-top .img-ico:first-child{
30  position: absolute;
31  width: 68rpx;
32  height: 38rpx;
33  left: 20rpx;
34  top: 20rpx;
35  z-index:9999;
36}
37.c-state1{
38  transform: rotate(0deg) scale(1) translate(75%,0%);
39  -webkit-transform: rotate(0deg) scale(1) translate(75%,0%);
40}
41.c-state2{
42  transform: rotate(0deg) scale(.8) translate(75%,0%);
43  -webkit-transform: rotate(0deg) scale(.8) translate(75%,0%);
44}

以上代码为效果为 图二

注意路径问题

文末福利:

福利一:前端,Java,产品经理,微信小程序,Python等100G资源合集大放送:https://www.jianshu.com/p/e8197d4d9880

福利二:微信小程序入门与实战全套详细视频教程。

【领取方法】

关注 【编程微刊】微信公众号:

回复【小程序demo】一键领取130个微信小程序源码demo资源。

回复【领取资源】一键领取前端,Java,产品经理,微信小程序,Python等资源合集100G资源大放送。

微信小程序开发中如何实现侧边栏的滑动效果?的更多相关文章

  1. 总结微信小程序开发中遇到的坑

    总结微信小程序开发中遇到的坑,一些坑你得一个一个的跳啊,/(ㄒoㄒ)/~~ 1,页面跳转和参数传递实例 首先说一下我遇到的需求有一个我的消息页面,里面的数据都是后端返回的,返回的数据大致如下,有一个是 ...

  2. 解决微信小程序开发中wxss中不能用本地图片

    微信小程序开发中wxss中不能用本地图片,我们可以用将我们的图片传到服务器上,然后直接引用在线地址.但是当我们没有服务器时,我们可以用"图床",这个具体可以百度.这里我们用第二种方 ...

  3. 微信小程序开发中的二三事之网易云信IMSDK DEMO

    本文由作者邹永胜授权网易云社区发布. 简介 为了更好的展示我们即时通讯SDK强悍的能力,网易云信IM SDK微信小程序DEMO的开发就提上了日程.用产品的话说就是: 云信 IM 小程序 SDK 的能力 ...

  4. 关于微信小程序开发中遇到的缺少game.json问题的解决

    一.小程序开发的两种选项 ①小游戏开发:内部对应的入口配置文件为game.json丶game.wxml之类的文件或者项目. ②小程序开发:内部对应的入口配置文件为app.json丶app.wxml之类 ...

  5. 微信小程序开发中的http请求总结

    在微信小程序进行网络通信,只能和指定的域名进行通信,微信小程序包括四种类型的网络请求. 普通HTTPS请求(wx.request) 上传文件(wx.uploadFile) 下载文件(wx.downlo ...

  6. 在微信小程序开发中使用Typescript

    Typescript的优势咱不需要赘述太多,有兴趣可以参考(https://www.typescriptlang.org/).今天给大家分享一下如何在微信小程序(或者其他同类小程序)开发中使用Type ...

  7. 【小程序开发】微信小程序开发中遇到的那些坑...

    第一坑: 设置了三个tabBar,却默认显示第二个,不能展示我的第一个[首页]. "list": [{ "pagePath":"page/KTGJ/i ...

  8. [技术博客]微信小程序开发中遇到的两个问题的解决

    IDE介绍 微信web开发者工具 前端语言 微信小程序使用的语言为wxml和wss,使用JSON以及js逻辑进行页面之间的交互.与网页的html和css略有不同,微信小程序在此基础上添加了自己的改进, ...

  9. 微信小程序开发中怎么设置转发(分享)的信息

    如果什么都不设置,转发时默认名称是小程序的名称,转发的图片显示的是当前页面的截图,如图一 如何在自定义转发信息呢? 在进行转发的页面中: Page({ onShareAppMessage: funct ...

随机推荐

  1. grunt yoman bower的理解

    grunt : 前端构建工具 1 什么事前端构建工具 目前前端已经开始了工程化 比如 一个项目 里面用到了几十个js文件 几十个css 很多图片资源 我们如果引入 还是按照以前的方式 out 因此这个 ...

  2. 今日SGU 5.2

    SGU123 题意:求和 收获:无 #include<bits/stdc++.h> #define de(x) cout<<#x<<"="< ...

  3. 【Codeforces Round #457 (Div. 2) C】Jamie and Interesting Graph

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 找比n-1大的最小的素数x 1-2,2-3..(n-2)-(n-1)长度都为1 然后(n-1)-n长度为(x-(n-2)) 然后其他 ...

  4. inode与ln命令

    inode可以看: http://www.cnblogs.com/itech/archive/2012/05/15/2502284.html 每个inode节点的大小,一般是128字节或256字节.i ...

  5. AC自己主动机模板

    AC自己主动机模板-- /* * AC自己主动机模板 * 用法: * 1.init() : 初始化函数 * 2.insert(str) : 插入字符串函数 * 3.build() : 构建ac自己主动 ...

  6. SpringMVC &amp; Struts2

    这两个框架可谓Java中的经典,Java开发必懂的框架,这两天在面试中又问道两者的异同.这里简单做了整理供大家參考交流. 概念:

  7. C语言编程入门——程序练习(下)

    C语言的一些简单操作练习. 互换两个数字: # include <stdio.h> int main(void) { int i = 3; int j = 5; int t;   //将i ...

  8. LinearLayout-控件不显示

    今天Mms遇到了一个问题,布局如下             <RelativeLayout                android:layout_width="match_par ...

  9. 记号(notation)的学习

    数学的记号(notation) 记号具体代表什么含义,取决于你的定义: 比如这样的 d⃗  一个向量,每个分量 d(i) 表示的是从初始结点 v 到当前节点 vi 的最短路径:也即这样的一个向量的每一 ...

  10. Office Open XML导出大数据

    Office Open XML导出大量数据到 Excel .NET使用Office Open XML导出大量数据到 Excel我相信很多人在做项目的都碰到过Excel数据导出的需求,我从最开始使用最原 ...