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


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 相关文章推荐
网页开发中的容易忽略的问题 javascript HTML中的table
Apr 15 Javascript
JQuery操作表格(隔行着色,高亮显示,筛选数据)
Feb 23 Javascript
js 取时间差去掉周六周日实现代码
Dec 25 Javascript
jQuery搜索子元素的方法
Feb 10 Javascript
JavaScript 数组- Array的方法总结(推荐)
Jul 21 Javascript
React Native实现简单的登录功能(推荐)
Sep 19 Javascript
用自定义图片代替原生checkbox实现全选,删除以及提交的方法
Oct 18 Javascript
Javascript中的作用域及块级作用域
Dec 08 Javascript
Vue引入jquery实现平滑滚动到指定位置
May 09 jQuery
修改node.js默认的npm安装目录实例
May 15 Javascript
vue相关配置文件详解及多环境配置详细步骤
May 19 Javascript
原生JS实现微信通讯录
Jun 18 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
解析php扩展php_curl.dll不加载的解决方法
2013/06/26 PHP
php登陆页的密码处理方式分享
2013/10/14 PHP
php实现通过ftp上传文件
2015/06/19 PHP
PHP防止图片盗用(盗链)的方法小结
2016/11/11 PHP
laravel5.5添加echarts实现画图功能的方法
2019/10/09 PHP
一些常用且实用的原生JavaScript函数
2010/09/08 Javascript
Javascript基础 函数“重载” 详细介绍
2013/10/25 Javascript
javascript scrollTop正解使用方法
2013/11/14 Javascript
JS正则表达式获取分组内容的方法详解
2013/11/15 Javascript
jquery实现图片灯箱明暗的遮罩效果
2013/11/15 Javascript
js获取当前月的第一天和最后一天的小例子
2013/11/18 Javascript
jQuery删除节点的三个方法即remove()detach()和empty()
2013/12/27 Javascript
js+html5实现canvas绘制网页时钟的方法
2016/05/21 Javascript
浅谈Javascript中的函数、this以及原型
2016/10/09 Javascript
js实现鼠标拖动功能
2017/03/20 Javascript
node.js中express模块创建服务器和http模块客户端发请求
2019/03/06 Javascript
Vue 3.0 全家桶抢先体验
2020/04/28 Javascript
Element实现表格嵌套、多个表格共用一个表头的方法
2020/05/09 Javascript
原生JS实现无缝轮播图片
2020/06/24 Javascript
vue组件讲解(is属性的用法)模板标签替换操作
2020/09/04 Javascript
[03:03]DOTA2 2017国际邀请赛开幕战队入场仪式
2017/08/09 DOTA
[45:52]2018DOTA2亚洲邀请赛 4.1小组赛 A组加赛 LGD vs Liquid
2018/04/02 DOTA
通过数据库对Django进行删除字段和删除模型的操作
2015/07/21 Python
Python实现并行抓取整站40万条房价数据(可更换抓取城市)
2016/12/14 Python
Python中函数及默认参数的定义与调用操作实例分析
2017/07/25 Python
python+matplotlib绘制简单的海豚(顶点和节点的操作)
2018/01/02 Python
python实现用户答题功能
2018/01/17 Python
Python实现统计给定字符串中重复模式最高子串功能示例
2018/05/16 Python
pytorch中tensor的合并与截取方法
2018/07/26 Python
CSS3 实现发光边框特效
2020/11/11 HTML / CSS
世界上最大的罕见唱片、CD和音乐纪念品网上商店:991.com
2018/05/03 全球购物
公务员职务工作的自我评价
2013/11/01 职场文书
《蜗牛》教学反思
2014/02/18 职场文书
批评与自我批评发言稿
2014/10/15 职场文书
单位作风建设自查报告
2014/10/23 职场文书
Netty分布式客户端接入流程初始化源码分析
2022/03/25 Java/Android