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


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 相关文章推荐
jquery load事件(callback/data)使用方法及注意事项
Feb 06 Javascript
iframe里面的元素触发父窗口元素事件的jquery代码
Oct 19 Javascript
seajs加载jquery时提示$ is not a function该怎么解决
Oct 23 Javascript
第五章之BootStrap 栅格系统
Apr 25 Javascript
微信小程序 向左滑动删除功能的实现
Mar 10 Javascript
JS实现上传图片实时预览功能
May 22 Javascript
angularjs定时任务的设置与清除示例
Jun 02 Javascript
关于TypeScript中import JSON的正确姿势详解
Jul 25 Javascript
javaScript 连接打印机,打印小票的实例
Dec 29 Javascript
vue router的基本使用和配置教程
Nov 05 Javascript
Vue分页效果与购物车功能
Dec 13 Javascript
jquery插件实现图片悬浮
Apr 16 jQuery
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 多维数组的排序问题 根据二维数组中某个项排序
2011/11/09 PHP
PHP获取网页所有连接的方法(附demo源码下载)
2016/03/30 PHP
PHP pthreads v3下同步处理synchronized用法示例
2020/02/21 PHP
使用Entrust扩展包在laravel 中实现RBAC的功能
2020/03/16 PHP
jquery imgareaselect 使用利用js与程序结合实现图片剪切
2009/07/30 Javascript
JavaScript获取flash对象与网上的有所不同
2014/04/21 Javascript
jQuery对象初始化的传参方式
2015/02/26 Javascript
AngularJS 最常用的功能汇总
2016/02/17 Javascript
微信小程序  网络请求API详解
2016/10/25 Javascript
JS 终止执行的实现方法
2016/11/24 Javascript
JS如何判断浏览器类型和详细区分IE各版本浏览器
2017/03/04 Javascript
vue-cli脚手架-bulid下的配置文件
2018/03/27 Javascript
nodejs 使用 js 模块的方法实例详解
2018/12/04 NodeJs
node读写Excel操作实例分析
2019/11/06 Javascript
js canvas实现俄罗斯方块
2020/10/11 Javascript
解决vue项目axios每次请求session不一致的问题
2020/10/24 Javascript
JavaScript实现网页下拉菜单效果
2020/11/20 Javascript
[08:44]DOTA2发布会群星聚首 我们都是刀塔人
2014/03/21 DOTA
[46:03]LGD vs VGJ.T 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
python写的一个squid访问日志分析的小程序
2014/09/17 Python
Python脚本实现下载合并SAE日志
2015/02/10 Python
利用Python的Django框架中的ORM建立查询API
2015/04/20 Python
Python使用cx_Oracle模块操作Oracle数据库详解
2018/05/07 Python
matplotlib给子图添加图例的方法
2018/08/03 Python
Flask模板引擎Jinja2使用实例
2020/04/23 Python
Python实现加密接口测试方法步骤详解
2020/06/05 Python
基于CSS3 animation动画属性实现轮播图效果
2017/09/12 HTML / CSS
WoolOvers爱尔兰:羊绒、羊毛和棉针织品
2017/01/04 全球购物
如何将整数int转换成字串String
2014/03/21 面试题
数据库方面面试题
2012/04/22 面试题
致跳高运动员加油稿
2014/02/12 职场文书
开工典礼策划方案
2014/05/23 职场文书
检讨书范文2000字
2015/01/28 职场文书
司机个人年终总结
2015/03/03 职场文书
Redis中有序集合的内部实现方式的详细介绍
2022/03/16 Redis
MySQL 原理与优化之Update 优化
2022/08/14 MySQL