微信小程序自定义胶囊样式


Posted in Javascript onDecember 27, 2020

本文实例为大家分享了微信小程序自定义左上角胶囊样式的具体代码,供大家参考,具体内容如下

1、 将app.js 中的 window 对象属性navigationStyle 改为自定义

"window": {
 "navigationStyle": "custom"
 },

改完之后的效果:

微信小程序自定义胶囊样式

2、获取 右上角胶囊的定位信息 设置

微信小程序自定义胶囊样式

调用 wx.getMenuButtonBoundingClientRect() 函数得到右上角胶囊定位信息

微信小程序自定义胶囊样式
微信小程序自定义胶囊样式 

所需要的 属性有 : top,height属性,用于计算自定义左上角胶囊定位的位置

拿到 右上角胶囊的 top和height 相加得到 屏幕导航栏的固定高度:

微信小程序自定义胶囊样式

在 data函数中声明一个导航栏高度属性,和一个 胶囊具体定位的top属性:

赋值导航栏的高度 数据:

// pages/testQ/index.js
Page({

 /**
 * 页面的初始数据
 */
 data: {
 navHeight:0,
 capsuleTop: 0

 },

 /**
 * 生命周期函数--监听页面加载
 */
 onLoad: function (options) {

 },

 /**
 * 生命周期函数--监听页面初次渲染完成
 */
 onReady: function () {

 },

 /**
 * 生命周期函数--监听页面显示
 */
 onShow: function () {
 let dwObj = wx.getMenuButtonBoundingClientRect()
 let navHeight_ = (dwObj.top + dwObj.height)
 let capsuleTop_ = dwObj.top
 this.setData(
 {
 navHeight: navHeight_,
 capsuleTop:capsuleTop_

 }
 )
 },

 /**
 * 生命周期函数--监听页面隐藏
 */
 onHide: function () {

 },

 /**
 * 生命周期函数--监听页面卸载
 */
 onUnload: function () {

 },

 /**
 * 页面相关事件处理函数--监听用户下拉动作
 */
 onPullDownRefresh: function () {

 },

 /**
 * 页面上拉触底事件的处理函数
 */
 onReachBottom: function () {

 },

 /**
 * 用户点击右上角分享
 */
 onShareAppMessage: function () {

 }
})

在 wxml 中定义 导航栏:

<!--pages/testQ/index.wxml-->

<!-- 左上角胶囊开始-->
<!--left-capsule 是最上层,可以设置背景-->
<view class="left-capsule">
 <!--left-capsule-nav 是用于定位左上角的位置-->
 <view class="left-capsule-nav" style="height:{{navHeight}}px;">
 <!--left-capsule-nav-content 是 胶囊主要内容-->
 <view style="position:relative;top:{{capsuleTop}}px;" class="left-capsule-nav-content"> 
 <!--back 胶囊 返回按钮-->
 <view class="back">
 <!-- 我这个图标引入的是 vant库的icon,如果不是使用vant的话 得自定义一个icon-->
 <van-icon name="arrow-left" color="white" size="20"/>
 </view> 
 <!-- line 胶囊 中间线条-->
 <view class="line"></view> 
 <!-- home 胶囊 返回首页按钮-->
 <view class="home">
 <!-- 我这个图标引入的是 vant库的icon,如果不是使用vant的话 得自定义一个icon-->
 <van-icon name="wap-home-o" color="white" size="20"/>
 </view> 
 </view>
 </view>
 <!-- 以上 可以 封装成自定义组件,在引入,这个地方是 胶囊外的内容-->
 <view class="main-content" style="top:{{navHeight}}px;">
 我是测试左上角胶囊
</view>
<!-- 左上角胶囊结束-->
</view>

wxss内容:

/* 导航栏css开始*/
.left-capsule{
 width: 100vh;
 height: 100vh;
 background-color: black;
}
.left-capsule .left-capsule-nav{
 width: 100%;
 position: fixed;
 z-index: 2;
}
.left-capsule-nav .left-capsule-nav-content{
 width: 85px;
 text-align: center;
 border-radius: 50px;
 position: relative;
 top: 26px;
 left: 20px;
 box-shadow:0px 0px 1px 0.2px white;
 background-color: #1d19195c;
 height: 30px;
}
.left-capsule-nav-content view{
 display: inline;
 width: 35px;
 position: relative;
}
.left-capsule-nav-content .back{
 top: 4px;left: -5px;
}
.left-capsule-nav-content .line{
 top: 3px;
 width: 1px;
 border-left: solid #cac3c3 thin;
 height: 17px;
 display: inline-block;
}
.left-capsule-nav-content .home{
 top: 4px;
}
/* 导航栏css结束*/
/* 内容*/
.main-content{
 background-color: red;
 position: absolute;
 width: 100%;
 z-index: 1;
 
}

效果图:

微信小程序自定义胶囊样式

如果觉得红色地方太挨得进的话 top 在加大一点

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
node.js中的path.delimiter方法使用说明
Dec 09 Javascript
浅谈JavaScript中的String对象常用方法
Feb 25 Javascript
JavaScript将数字转换成大写中文的方法
Mar 23 Javascript
JQuery使用index方法获取Jquery对象数组下标的方法
May 18 Javascript
不得不分享的JavaScript常用方法函数集(下)
Dec 25 Javascript
浅谈jquery点击label触发2次的问题
Jun 12 Javascript
js代码实现下拉菜单【推荐】
Dec 15 Javascript
浅谈Vuex的状态管理(全家桶)
Nov 04 Javascript
VueJS 组件参数名命名与组件属性转化问题
Dec 03 Javascript
node.js连接mysql与基本用法示例
Jan 05 Javascript
vue-cli3 项目优化之通过 node 自动生成组件模板 generate View、Component
Apr 30 Javascript
js实现拖动缓动效果
Jan 13 Javascript
JS实现鼠标移动拖尾
Dec 27 #Javascript
JavaScript实现滚动加载更多
Dec 27 #Javascript
jQuery实现简单轮播图效果
Dec 27 #jQuery
JavaScript实现瀑布流布局的3种方式
Dec 27 #Javascript
Vue实现省市区三级联动
Dec 27 #Vue.js
JavaScript实现通讯录功能
Dec 27 #Javascript
vue3.0自定义指令(drectives)知识点总结
Dec 27 #Vue.js
You might like
?繁体转换的class
2006/10/09 PHP
ThinkPHP上使用多说评论插件的方法
2014/10/31 PHP
php实现简单文件下载的方法
2015/01/30 PHP
thinkphp 手机号和用户名同时登录
2017/01/20 PHP
PHP生成二维码与识别二维码的方法详解【附源码下载】
2019/03/07 PHP
JQUERY CHECKBOX全选,取消全选,反选方法三
2008/08/30 Javascript
javascript 模拟点击广告
2010/01/02 Javascript
Javascript的构造函数和constructor属性
2010/01/09 Javascript
js中设置元素class的三种方法小结
2011/08/28 Javascript
js返回上一页并刷新代码整理
2012/12/21 Javascript
Js 导出table内容到Excel的简单实例
2013/11/19 Javascript
使用js判断当前时区TimeZone是否是夏令时
2014/02/23 Javascript
jquery实现的伪分页效果代码
2015/10/29 Javascript
基于Jquery制作图片文字排版预览效果附源码下载
2015/11/18 Javascript
JS获取和修改元素样式的实例代码
2016/08/06 Javascript
浅谈js在html中的加载执行顺序,多个jquery ready执行顺序
2016/11/26 Javascript
微信小程序 下拉菜单的实现
2017/04/06 Javascript
JS实现利用两个队列表示一个栈的方法
2017/12/13 Javascript
Node.js命令行/批处理中如何更改Linux用户密码浅析
2018/07/22 Javascript
JavaScript实现PC端横向轮播图
2020/02/07 Javascript
vue实现虚拟列表功能的代码
2020/07/28 Javascript
vue组件暴露和.js文件暴露接口操作
2020/08/11 Javascript
Angular处理未可知异常错误的方法详解
2021/01/17 Javascript
python基础教程之Hello World!
2014/08/29 Python
Python算法应用实战之队列详解
2017/02/04 Python
Python闭包执行时值的传递方式实例分析
2018/06/04 Python
python生成多个只含0,1元素的随机数组或列表的实例
2018/11/12 Python
python 实现在shell窗口中编写print不向屏幕输出
2020/02/19 Python
python 两个一样的字符串用==结果为false问题的解决
2020/03/12 Python
Matplotlib中rcParams使用方法
2021/01/05 Python
罗马尼亚在线杂货店:Pilulka.ro
2019/09/28 全球购物
《长城》教学反思
2014/02/14 职场文书
入党积极分子自我鉴定
2014/02/18 职场文书
高中家长意见怎么写
2015/06/03 职场文书
防溺水主题班会教案
2015/08/12 职场文书
《确定位置》教学反思
2016/02/18 职场文书