当前位置: 首页 > 编程日记 > 正文

微信小程序开发中如何实现侧边栏的滑动效果?

原文链接: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资源合集大放送:jianshu.com/p/e8197d4d9

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


【领取方法】

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

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

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


转载于:https://www.cnblogs.com/wangting888/p/9701515.html

相关文章:

采购审批专题总结--bob

一采购审批设置的一般步骤&#xff1a; 前置步骤 ①定义安全性控制 N&#xff1a;PO/设置/采购/单据类型 ②使用审批结构 N&#xff1a;PO/设置/组织/财务选项 ③安全层次结构选择 N&#xff1a;PO/设置/组织/采购选项 ④采购…

【蓝桥java】递归基础之39级台阶

题目&#xff1a; 小明刚刚看完电影《第39级台阶》。离开电影院的时候&#xff0c;他数了数礼堂前的台阶数&#xff0c;恰好是39级! 站在台阶前&#xff0c;他突然又想着一个问题&#xff1a; 如果我每一步只能迈上1个或2个台阶。先迈左脚&#xff0c;然后左右交替&#xff0c;…

Linux服务器安装配置JDK

一、准备工作&#xff1a; 1.登录服务器&#xff0c;切换到root用户&#xff08;su - root&#xff0c;然后输入密码&#xff0c;按enter&#xff09;&#xff0c;进入根目录&#xff1a;cd / 2.进入要安装jdk的目录&#xff0c;自己可以创建一个java目录&#xff0c;执行命令如…

Apache的工作原理

Apache的请求处理 尽管不是全部的&#xff0c;但是绝大部分模块都关注处理HTTP请求的某些方面。不过&#xff0c;一个模块不能考虑处理HTTP的所有方面——这是httpd要做的工作。模块化方法的一个好处就是&#xff1a;一个模块可以只关注一个具体的任务&#xff0c;而不去考虑那…

TP框架数据模型

1.TP框架的数据模型需要建在Model文件夹下&#xff1a; 1.数据模型 与控制器相似&#xff0c;但是每个数据模型控制一张数据表。 2.数据模型可写可不写&#xff0c;如果不写 则沿用父类数据模型。 2.访问数据库&#xff1a; 1.更改数据库配置&#xff1a; 2.访问数据库的三种方…

【蓝桥java】递归基础之车辆进出栈

题目&#xff1a; X星球特别讲究秩序&#xff0c;所有道路都是单行线。 一个甲壳虫车队&#xff0c;共16辆车&#xff0c;按照编号先后发车&#xff0c;夹在其它车流中&#xff0c;缓缓前行。 路边有个死胡同&#xff0c;只能容一辆车通过&#xff0c;是临时的检查站&#xff0…

SIP协议的传输层原理报文解析(解读rfc3581)(待排版)

关于rfc3581/rport参数的阐述 一&#xff1a;简述 一般情况下&#xff0c;服务器在接收到request后&#xff0c;应答发向哪里呢&#xff1f;服务器在计算回应应答的算法是一种混合模式&#xff0c;具体说来是这样的&#xff1a; 1&#xff0c;IP&#xff1a;从哪里接收到的就会…

listener.ora、sqlnet.ora、tnsnames.ora 详解

三个配置文件 listener.ora、sqlnet.ora、tnsnames.ora&#xff0c;都是放在$oracle_home\network\admin目录下。 重点&#xff1a;三个文件的作用和使用 sqlnet.ora-----作用类似于linux或者其他unix的nsswitch.conf文件&#xff0c;通过这个文件来决定怎么样找一个连接中出现…

简单图片放大效果

在今天我创造了一个小的代码段在JQuery,这次是关于图像缩放盘旋,这种特征可能适合一个网络摄影展,现场有许多内容,给一个小快速预览关于该物品。 <!DOCTYPE html><html><head><title>JQuery Zoom Hover</title><meta http-equiv"Content…

使用datatables实现列宽设置、水平滚动条、显示某列部分内容

示例 1、//使用 columnDefs 给列设置宽度 $(#example).DataTable( { "columnDefs": [ //给第一列指定宽度为表格整个宽度的20% { "width": "20%", "targets": 0 } ] } ); //使用 columns 给列设置宽度 $(#example).DataTable( { &q…

使用jvisualvm远程监控tomcat(阿里云ECS)

写在前面&#xff1a; 使用jvisualvm远程监控tomcat(阿里云ECS)&#xff0c;连接是报错&#xff1a;service:jmx:rmi:jndi/rmi:IP:端口// 连接到 IP:端口&#xff0c;网上找了很多资料&#xff0c;未能解决&#xff0c;现已解决&#xff0c;记录下&#xff0c;供参考 本文为本…

【蓝桥java】递归基础之振兴中华

题目&#xff1a; 小明参加了学校的趣味运动会&#xff0c;其中的一个项目是&#xff1a;跳格子。 地上画着一些格子&#xff0c;每个格子里写一个字&#xff0c;如下所示&#xff1a;&#xff08;也可参见下图&#xff09; 从我做起振 我做起振兴 做起振兴中 起振兴中华 比赛时…

*p++,*(p++),(*p)++,printf过程调用

#include<stdio.h> int main() { printf(); } 答案为D 执行完(*ptr)123;后arr[]{129,7,8,9,10} 执行printf("%d.%d\n",*ptr,*(ptr));时&#xff0c;根据c语言中的函数参数压栈顺序--从右向左&#xff0c;首先计算表达式*(ptr)并将其压入栈中&#xff0c;…

docker实战部署Javaweb项目

一、部署环境说明 docker服务版本&#xff1a;version 18.09.0nginx服务版本&#xff1a;version: nginx/1.15.10redis服务版本&#xff1a;version: redis/5.0.3tomcat服务版本&#xff1a;version: tomcat/8.5.30JDK服务版本&#xff1a;alpine-oraclejdk8 二、安装docker服务…

父子表关联在窗体中的绑定显示和浏览

private BindingManagerBase bm1 null;private BindingManagerBase bm2 null;private void DataScanInForm2_Load(object sender, EventArgs e) {string sqlString1 "select * from 客户";string sqlString2 "select * from 订单";string[] sql…

【Excel】使用Excel函数计算二项分布泊松分布概率

例&#xff1a; 计算如下参数的二项分布和泊松分布 二项分布 1、选中单元框&#xff0c;添加函数 2、选中统计类函数 3、选择二项分布概率函数 4、输入相应的参数 注&#xff1a; &#xff08;1&#xff09;在输入参数时点击相应的单元格即可 &#xff08;2&#xff09;最后…

万能android调用webservice方法——参数类型不受限制

说明&#xff1a;只是个例子&#xff0c;扩展性、复用性不好&#xff0c;只是提出一个思路&#xff0c;返回的XML解析代码写的也很烂聪明的你&#xff0c;拿来代码的时候&#xff0c;肯定能解决这些问题关键代码&#xff1a; try{//发帖机原理&#xff0c;模拟浏览器finalStrin…

Vue轮播图插件---Vue-Awesome-Swiper

轮播图插件 Vue-Awesome-Swiper 地址&#xff1a;https://github.com/surmon-china/vue-awesome-swiper 安装&#xff1a;npm install vue-awesome-swiper --save 局部引入&#xff1a;import swiper/dist/css/swiper.cssimport { swiper, swiperSlide } from vue-awesome-swip…

linux下遇到的小问题与解决方法

Linux下执行.sh脚本错误&#xff1a;bin/sh^M: bad interpreter: No such file or directory 原因是.sh脚本在windows系统下用记事本文件编写的。不同系统的编码格式引起的。 转行文件的编码格式&#xff1a; 1、确保用户对文件有读写及执行权限 oraclelinux-106:~/RMAN/bin&g…

阶段1 语言基础+高级_1-3-Java语言高级_04-集合_05 List集合_1_List集合_介绍常用方法...

有序的&#xff0c;还包含索引&#xff0c;允许有重复的值、 add 打印出来的不是地址&#xff0c;说明重写了toString的方法 remove方法 返回的是被移除的元素 set方法 get 索引越界异常 几种越界的异常转载于:https://www.cnblogs.com/wangjunwei/p/11237813.html

【蓝桥java】进制与整除之天平秤重

题目&#xff1a; 用天平称重时&#xff0c;我们希望用尽可能少的砝码组合称出尽可能多的重量。 如果只有5个砝码&#xff0c;重量分别是1&#xff0c;3&#xff0c;9&#xff0c;27&#xff0c;81 则它们可以组合称出1到121之间任意整数重量&#xff08;砝码允许放在左右两个盘…

分享一个C#使用AT指令控制语音猫的例子

阅读全文&#xff1a;http://www.cckan.net/forum.php?modviewthread&tid61 先来说说 最近公司让开发一个语音猫充值的软件&#xff0c;就是拨打10086&#xff08;虚拟&#xff09;进行话费充值操作&#xff0c;虚拟流程如下&#xff1b; 1.先拨通10086 2.按1进行话费充值…

个人银行账户管理程序

这个程序是一个银行账户管理的程序&#xff0c;是用C来实现程序功能的&#xff0c;该程序包含六个文件&#xff0c;其中有date.h头文件 是日期类的头文件&#xff0c;date.cpp是日期类的实现文件&#xff0c;accumulator.h是按日将数值累加的accumulator类的头文件&#xff0c;…

两个关于水花的测试。

海面上的水花的特效&#xff0c;水花是在浪尖处发射出来的&#xff0c;目前还没有让发射参数自动化的方法&#xff0c;都是表达式。一旦改变浪的性质&#xff0c;发射的粒子就要重新写动态了。 Splash on the ocean emitted from the crisp faces on top of the wave, the whit…

泛型在三层中的应用

一说到三层架构&#xff0c;我想大家都了解&#xff0c;这里就简单说下&#xff0c;三层架构一般包含&#xff1a;UI层、DAL层、BLL层&#xff0c;其中每层由Model实体类来传递&#xff0c;所以Model也算是三层架构之一了&#xff0c;例外为了数据库的迁移或者更OO点&#xff0…

【蓝桥java】进制与整除之尼姆堆

题目&#xff1a; 有3堆硬币&#xff0c;分别是3,4,5 二人轮流取硬币。 每人每次只能从某一堆上取任意数量。 不能弃权。 取到最后一枚硬币的为赢家。 求先取硬币一方有无必胜的招法。 在提供代买前做几条补充&#xff1a; &#xff08;1&#xff09;这里有一个不是很好理解的…

RSA遭骇 Token 换?不换?

RSA SecurID Token召回更换的动作仍然持续进行中&#xff0c;根据外电报导&#xff0c;美国有些企业已经要求更换Token&#xff0c;如花旗集团、美国银行、富国银行、摩根大通、澳盛银行、澳洲西太平洋银行。于此同时&#xff0c;一些竞争供应商也动作频频&#xff0c;例如Safe…

二叉树的镜像(数组,前后 遍历重建二叉树)

题目描述 操作给定的二叉树&#xff0c;将其变换为源二叉树的镜像。输入描述: 二叉树的镜像定义&#xff1a;源二叉树 8/ \6 10/ \ / \ 5 7 9 11镜像二叉树8/ \10 6/ \ / \11 9 7 5 #include <iostream> #include <cstdio> #include <cstdlib> #in…

tp5实现Redis的简单使用

方法1&#xff1a; Controller <?php namespace app\index\controller;use think\Controller; use think\session\driver\Redis;class Index extends Controller {public function index(){$redis new Redis();if(!$redis->has(str)){var_dump($redis->set(str,this…

Linux下getsockopt/setsockopt 函数说明

【getsockopt/setsockopt系统调用】 功能描述&#xff1a; 获取或者设置与某个套接字关联的选 项。选项可能存在于多层协议中&#xff0c;它们总会出现在最上面的套接字层。当操作套接字选项时&#xff0c;选项位于的层和选项的名称必须给出。为了操作套接字层的选项…