微信小程序左滑动显示菜单功能的实现
程序员文章站
2023-12-25 21:36:39
效果图如下所示:
view
效果图如下所示:
view
<view class="page"> <!--下层左侧导航--> <view class="page-bottom"> <view class="page-content"> <view class="userinfo"> <view class="userimg"> <image src='/images/user.png'></image> </view> <view class="usertext">嗨!你好,{{user.name}}</view> </view> <view bindtap="open_list" wx:for-items="{{nav_list}}" class="page-list"> <view bindtap='gotourl' data-id='{{item.url}}'>{{item.name}}</view> </view> </view> </view> <!--上层右侧展示页面--> <view class="page-top {{open ? 'page-state' : ''}}"> <!--上层右侧展示页面遮罩层--> <view class="page-mask {{open ? '' : 'page-mask-show'}}" bindtap="offcanvas"></view> <!--列表按钮--> <image class="left-nav" bindtap="offcanvas" src="/images/category.png"></image> <!--轮播代码,可以不要--> <scroll-view scroll-y="true" style="height:200px" class="page-body" bindscrolltolower="loadmore"> <view class="swiper"> <view class="sim-panel" style='margin:0px auto;width:100%;padding-top:7%'> <view style='margin-left:7%;width:100%;'> <view class="view-left" bindtap='gotolocal' > <view class="img-view"> <image src='/images/camera.png' class="imgs"></image> </view> <view class="left-text">现场记录</view> </view> <view class="more-view"> <view class="more" >更多...</view> </view> </view> </view> </view> </scroll-view> </view> </view>
css
view-left{ width:40%; float:left; height:150px; background-color:#33aefd; } left-text{ text-align: center; color: #fff; } userinfo{ height:50px; } userimg{ border:1px solid #fff; height:40px; width:40px; margin:5px; border-radius: 100px; float: left; } userimg image{ height:40px; width:40px; border-radius: 100px; } usertext{ color: #fff; line-height: 50px; } img-view{ height:120px; width:80%; margin:0 auto; border:1px solid #33aefd; } imgs{ border:2px solid #fff; width:80px; height:80px; margin:20px auto; display: block; border-radius: 100px; } more-view{ width:40%; float:left; height:150px; margin-left:7%; background-color:#d1d1d1; } more{ margin:45% auto; text-align:center; color: #fff; } bottom{ bottom: 0px; position: absolute; margin: 0 auto; width:100%; height:50px; } page,.page { height: 100%; font-family: 'pingfang sc', 'helvetica neue', helvetica, 'droid sans fallback', 'microsoft yahei', sans-serif; } /*左侧导航列表 */ page-bottom{ height: 100%; width: 75%; position: fixed; background-color: rgb(0, 68, 97); z-index: 0; } page-list{ color: white; padding: 30rpx 0 30rpx 40rpx; } /*右侧展示层 */ page-top{ position: relative; top: 0; left:0; width: 750rpx; height: 100%; background-color: rgb(255, 255, 255); z-index: 0; transition: all 0.4s ease; -webkit-transition: all 0.4s ease; } page-state{ transform: rotate(0deg) scale(1) translate(75%,0%); -webkit-transform: rotate(0deg) scale(1) translate(75%,0%); } imgw{width:100%;} /*右侧列表按钮 */ page-top .left-nav{ position: fixed; width: 68rpx; height: 68rpx; left: 20rpx; bottom: 20rpx; } /*右侧遮罩层 */ page-mask{ position: absolute; width: 100%; height: 100%; top: 0; left: 0; background-color: rgba(0,0,0,0.5); z-index: 998; } page-mask-show{ display: none; }
js
var app = getapp(); var data = require('../../utils/data.js'); page({ /** * 页面的初始数据 */ data: { addnumber:0, banner_url: data.bannerlist(), nav_list: [{ name: "现场记录", url:"../expo-list/expo-list" },{ name: "退出", url: "../login/login" }], user:null, open: false, indicatordots: true,//是否显示面板指示点 autoplay: true,//是否开启自动切换 interval: 3000,//自动切换时间间隔 duration: 500//滑动动画时长 }, gotourl:function(e){ wx.navigateto({ url: e.currenttarget.dataset.id }) }, //列表的操作函数 open_list: function () { //此处进行操作 this.setdata({ open: false }); }, //左侧导航的开关函数 offcanvas: function () { if (this.data.open) { this.setdata({ open: false }); } else { this.setdata({ open: true }); } }, })
源码下载: