微信小程序实现左侧滑栏过程解析
微信(小程序)  /  管理员 发布于 5年前   543
前言
一直想给项目中的小程序设置侧滑栏,将退出按钮放到侧滑中,但是小程序没有提供相应的控件和API,因此只能自己手动实现,网上很多大神造的轮子很不错,本文就在是站在巨人的肩膀上实现。
hexo图片不显示问题,可前往简书
效果
先看看效果,我的侧滑栏需要列出如下信息:
初始状态下,左下角设置悬空按钮
点击悬空按钮,侧边栏拉出,悬空按钮旋转180度
主页内容向右滑动一定比例,并设置阴影遮罩
实现
首先将xml文件分为三部分,一部分是主页内容,一部分是侧滑栏内容,一部分是悬浮按钮。
{{userInfo.nickName}} 用户:{{YHMC}} 账号:{{YHZH}} 角色:{{YHJS}} 版本:{{version}} {{motto}}
wxss文件,样式文件中,主要是.c-state,.c-button-open,.cover三个样式。
/**index.wxss**/.userinfo { display: flex; flex-direction: column; align-items: center;}.userinfo-avatar { width: 128rpx; height: 128rpx; margin: 20rpx; border-radius: 50%;}.userinfo-nickname { color: #aaa;}.account-info { margin-top: 50rpx;}.account-info-item { display: flex; align-items: center; height: 54px; margin-left: 10rpx; border-bottom: 1px solid #eee;}/* 侧边栏样式 */.page-slidebar { height: 100%; width: 65%; position: fixed; background-color:white; z-index: 0;} /* 主页样式 */.page-top { height: 100%; position: fixed; width: 100%; background-color:white; z-index: 0; transition: All 0.4s ease; -webkit-transition: All 0.4s ease;}/* 控制侧边栏的内容距离顶部的距离 */.page-content { padding-top: 60rpx;}/* 当屏幕向左滑动,出现侧边栏的时候,主页的动画样式 *//* scale:取值范围 0~1 ,表示屏幕大小是原来的百分之几,可以自己修改成 0.8 试下*//* translate(60%,0%) 表示向左滑动的时候,侧边栏占用平时的宽度为 60% */.c-state { transform: rotate(0deg) scale(1) translate(65%, 0%); -webkit-transform: rotate(0deg) scale(1) translate(65%, 0%);}.floatbutton { position: fixed; width: 100rpx; height: 100rpx; bottom: 140rpx; left: 40rpx; z-index: 9999;}.c-button-open { transform: rotate(180deg) scale(1) translate(65%, 0%); -webkit-transform: rotate(180deg) scale(1) translate(65%, 0%); transition-duration:0.5s; -webkit-transition-duration: 0.5s; left: 60%;}/* 遮盖层样式 */.cover{ width: 100%; height: 100%; background-color:gray; opacity: 0.5; z-index: 9000;}.quit-view { height: 5%; width: 65%;}.quit-btn { position: fixed; bottom: 5rpx; z-index: 999; color: #fff; width: 65%; border-radius: 5rpx; background-color: #064acb;}
js文件,这里不涉及我demo中申请用户信息内容。
// 点击左下角小图标事件 openSlider: function (e) { if (this.data.open) { this.setData({ open: false }); } else { this.setData({ open: true }); } }, tap_start: function (e) { // touchstart事件 // 把手指触摸屏幕的那一个点的 x 轴坐标赋值给 mark 和 newmark this.data.mark = this.data.newmark = e.touches[0].pageX; }, tap_drag: function (e) { // touchmove事件 this.data.newmark = e.touches[0].pageX; // 手指从左向右移动 if (this.data.mark < this.data.newmark) { this.istoright = true; } // 手指从右向左移动 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; // 通过改变 opne 的值,让主页加上滑动的样式 if (this.istoright) { this.setData({ open: true }); } else { this.setData({ open: false }); } }
参考资料
微信小程序之侧边栏滑动实现(附完整源码)
微信小程序侧边栏滑动特效(左右滑动)
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
122 在
学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..123 在
Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..原梓番博客 在
在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..博主 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..1111 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
Copyright·© 2019 侯体宗版权所有·
粤ICP备20027696号