原生小程序---自定义导航栏以及使用van-popup左侧半屏

效果图

就是这样的效果。。。。,复制下面的代码,调试调试就能直接使用

上代码

图一代码

对于的json文件必须要有这个属性 "navigationStyle": "custom",

wxml

xml 复制代码
<image class="indexBg" src="../../image/indexBg.png" mode="" />
<!-- 放入顶部即可 -->
<watermark name=""></watermark>
<view class="navbar" style="height:{{navHeight+5}}px; ">
  <view class="navBody" style="height:{{navHeight+5-statusBarHeight}}px; margin-top: {{statusBarHeight}}px;">
    <image class="navbar_left" style="top:{{navTop}}px;height:{{jnheight-1}}px;width:{{jnwidth-52}}px" src="../../image/indexUser.png" mode="aspectFit" bindtap="openUsers"></image>
    <view class="navbar_title" style="top:{{navTop}}px;">
      <!-- <image src="../../image/login2.png" mode="" /> -->
    自定义的导航栏
    </view>
  </view>
</view>
<!-- wx:if="{{leftPopup}}" -->
<leftPopupPro id="myChild" bindclosePopup="handleClosePopup" />

wxss css自己写也行

css 复制代码
.indexBg {
  width: 100%;
  height: 100%;
  position: fixed;
}

.navbar {
  width: 100%;
  overflow: hidden;
  position: sticky;
  top: 0;
  left: 0;
  z-index: 10;
  flex-shrink: 0;
}
.navBody{
  display: flex;
  align-items: center;
}
.navbar_left {
  display: -webkit-flex;
  display: flex;
  -webkit-box-align: center;
  -ms-flex-align: center;
  -webkit-align-items: center;
  align-items: center;
  position: absolute;
  left: 34rpx;
  z-index: 11;
  line-height: 1;
  overflow: hidden;
  width: 64rpx;
  height: 64rpx;
}

.navBack image {
  width: 60%;
}

.navbar_left view {
  width: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
}

.nav_line {
  border-left: 1rpx solid #f0f0f0;
}

.navbar_title {
  width: 100%;
  box-sizing: border-box;
  padding-left: 90px;
  padding-right: 140px;
  height: 32px;
  line-height: 32px;
  text-align: center;
  position: absolute;
  left: 0;
  z-index: 10;
  color: #333;
  font-size: 16px;
  font-weight: bold;
  /* text-overflow: ellipsis; */
  overflow: hidden;
  white-space: nowrap;
}

.navbar_title image{
width: 328rpx;
height: 50rpx;
line-height: 50rpx;
}

js代码

javascript 复制代码
var app = getApp()
Page({

  handleClosePopup() {
    // 处理子组件关闭 Popup 弹窗的事件
  },
  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {
    this.setData({
      statusBarHeight: app.globalData.statusBarHeight, //状态栏高度
      navHeight: app.globalData.navHeight, //导航栏高度
      navTop: app.globalData.navTop, //胶囊按钮与顶部的距离
      jnheight: app.globalData.jnheight, //胶囊高度
      jnwidth: app.globalData.jnwidth //胶囊宽度
    })
  },
})

图二(封装成弹窗组件)

wxml

xml 复制代码
<!-- 左侧弹出 -->
<van-popup show="true" position="left" closeable custom-style="height: 100%;width: 90%;">
  <view class="navbar" style="height:{{navHeight+5}}px; ">
    <view class="navBody"
    style="height:{{navHeight+5-statusBarHeight}}px; margin-top: {{statusBarHeight}}px;">
      <view class="navbar_left">
        <text class="navbar_leftImg" style="top:{{navTop}}px;height:36rpx;width:18rpx">
         返回
        </image>
      </view>
    </view>
  </view>
  <view class="contentbox" style="height: calc( 100% - {{navHeight+5}}px )">
  </view>
</van-popup>

wxss css自己写也行

css 复制代码
.navbar {
  width: 100%;
  overflow: hidden;
  position: sticky;
  top: 0;
  left: 0;
  z-index: 10;
  flex-shrink: 0;
  background: #fff;
}
.navBody{
  display: flex;
  align-items: center;
  background: #fff;
}
.navbar_left {
  display: -webkit-flex;
  display: flex;
  -webkit-box-align: center;
  -ms-flex-align: center;
  -webkit-align-items: center;
  align-items: center;
  position: absolute;
  left: 34rpx;
  z-index: 11;
  line-height: 1;
  overflow: hidden;
  width: 106rpx;
  height: 64rpx;
  background: rgba(255,255,255,0.6);
  border-radius: 25px;
  border: 1px solid rgba(151,151,151,0.2);
}
.navbar_leftImg{
width: 18rpx;
height: 34rpx;
opacity: 0.9;
margin: 0 auto;
}
.contentbox{
  position: relative;
  height: 100%;
}

js代码

javascript 复制代码
const app = getApp()
Component({
  lifetimes: {
    attached: function () {
      this.setData({
        statusBarHeight: app.globalData.statusBarHeight, //状态栏高度
        navHeight: app.globalData.navHeight, //导航栏高度
        navTop: app.globalData.navTop, //胶囊按钮与顶部的距离
        jnheight: app.globalData.jnheight, //胶囊高度
        jnwidth: app.globalData.jnwidth, //胶囊宽度
      })
    }
  },
})
相关推荐
T011561812 小时前
独立开发者商单实战|商超门店小程序(自提 + 同城配送):小程序全端页面 & 业务流程总图汇总
微信小程序·小程序·个人开发·前端实战
驳是1 天前
入坑 UniApp 写小程序,一些感受
微信小程序
不如摸鱼去2 天前
Wot UI 2.3.0 发布:二维码组件来了,Open Wot 与 wot-starter 同步更新
前端·ui·微信小程序·前端框架·uni-app
万亿少女的梦1682 天前
基于微信小程序、Express与MongoDB的校园失物招领系统设计
mongodb·微信小程序·node.js·express·系统设计
小徐_23333 天前
Wot UI 2.3.0 发布:二维码组件来了,Open Wot 与 wot-starter 同步更新
前端·微信小程序·uni-app
2601_953720823 天前
【计算机毕业设计】基于微信小程序的拼车服务系统设计与实现
微信小程序·小程序·课程设计
FungLeo3 天前
Taro 4 微信小程序:RootPortal CSS 变量继承问题与自建 PagePortal 解决方案
微信小程序·taro·css 变量
海纳百川·纳海川5 天前
租房行业数字化:换个思路解决“老问题”
大数据·微信小程序·小程序
JasonMa1537 天前
从零搭建一个微信小程序活动管理平台(一):架构设计与技术选型
javascript·微信小程序·node.js
鲁Q同志8 天前
微信小程序【uni-file-picker文件预览】
微信小程序·小程序