当前位置:网站首页>Applet custom top navigation bar, uni app wechat applet custom top navigation bar
Applet custom top navigation bar, uni app wechat applet custom top navigation bar
2022-07-01 02:23:00 【The bald road of procedural ape】
A demand requires the button in the upper left corner , Change to Icon , The effect is as follows

1、 To customize the top navigation bar, you need to pay attention to , For details, please refer to uniapp file , To view the document

2、 Detailed code and configuration , The key point is to be compatible with different models
2.1 page.json Remove the native navigation bar style from the file "navigationStyle": "custom"

2.2 App.vue stay onShow Get data from and store
<script>
export default {
onShow: function() {
console.log('App Show')
uni.getSystemInfo({
success: (result) => {
// Get the height of the status bar of the mobile phone system ( Different mobile phones have different status bar heights ) ( Do not use uni-app Official document var(--status-bar-height) Officially, this is fixed 20px It's not right )
// console.log(' Current mobile phone status bar height ',result.statusBarHeight)
let statusBarHeight = result.statusBarHeight + 'px'
// Get information about the right capsule Company px
const menuButtonInfo = uni.getMenuButtonBoundingClientRect()
//bottom: The distance from the bottom of the capsule to the top of the screen
//height: Capsule height
//left: The distance from the left side of the capsule to the left side of the screen
//right: The distance from the right side of the capsule to the left side of the screen
//top: The distance from the top of the capsule to the top of the screen
//width: Capsule width
// console.log(menuButtonInfo.width, menuButtonInfo.height, menuButtonInfo.top)
// console.log(' Calculate the distance from the right side of the capsule to the right side of the screen ', result.screenWidth - menuButtonInfo.right)
let menuWidth = menuButtonInfo.width + 'px'
let menuHeight = menuButtonInfo.height + 'px'
let menuBorderRadius = menuButtonInfo.height / 2 + 'px'
let menuRight = result.screenWidth - menuButtonInfo.right + 'px'
let menuTop = menuButtonInfo.top + 'px'
let contentTop = result.statusBarHeight + 44 + 'px'
let menuInfo = {
statusBarHeight: statusBarHeight,// Status bar height ---- Used to design the top navigation bar of the custom navigation bar page padding-top Use : Purpose to set aside the status bar area of the system
menuWidth: menuWidth,// Capsule width on the right -- It is used to set the left capsule of the customized navigation bar page
menuHeight: menuHeight,// Capsule height on the right -- It is used to set the left capsule of the customized navigation bar page
menuBorderRadius: menuBorderRadius,// Half fillet -- It is used to set the left capsule of the customized navigation bar page
menuRight: menuRight,// The distance between the capsule on the right and the screen on the right -- It is used to set the left capsule of the customized navigation bar page
menuTop: menuTop,// The distance from the top of the capsule on the right to the top of the screen -- It is used to set the left capsule of the customized navigation bar page
contentTop: contentTop,// The height of the content area from the top of the page -- It is used to locate the distance of the content area of the custom navigation bar page
}
uni.setStorageSync('menuInfo', menuInfo)
},
fail: (error) => {
console.log(error)
}
})
},
}
</script>2.3 Customize the top navigation bar page
<template>
<view class="index-page">
<!-- paddingTop If it does not take effect, it can be replaced by marginTop -->
<view class="tab_title" :style="{ paddingTop: statusBarHeight}">
<!-- Custom style in the upper left corner -->
<view class="menu_btn flex-betwee box-sizing"
:style="{ position: 'fixed', top: menuTop, left: menuRight, width: menuWidth, height: menuHeight, borderRadius: menuBorderRadius}">
<image class="logo" src="/static/logo.png" @click="goStepPage"></image>
<view class="tit">uniapp</view>
</view>
</view>
<view class="content_box box-sizing" :style="{marginTop:contentTop}">
Content
</view>
</view>
</template>
<script>
export default {
data() {
return {
statusBarHeight: uni.getStorageSync('menuInfo').statusBarHeight,// The height of the status bar ( Can be set as the top navigation bar padding-top)
menuWidth: uni.getStorageSync('menuInfo').menuWidth,
menuHeight: uni.getStorageSync('menuInfo').menuHeight,
menuBorderRadius: uni.getStorageSync('menuInfo').menuBorderRadius,
menuRight: uni.getStorageSync('menuInfo').menuRight,
menuTop: uni.getStorageSync('menuInfo').menuTop,
contentTop: uni.getStorageSync('menuInfo').contentTop,
}
},
}
</script>
<style lang="scss" scoped>
.box-sizing {
box-sizing: border-box;
}
.index-page {
width: 100vw;
height: calc(100vh - 64px); // Solve the problem of scrolling up and down when the page has no content Height default 44px + padding-top 20px
// padding: 32rpx;
.tab_title {
width: 100%;
height: 44px !important; // This is fixed 44px( The top height of all applets is = 44px + Height of mobile phone system status bar )
line-height: 44px;
text-align: center;
// background-color: #d00;
background-color: #f8f8f8 !important;
position: fixed;
top: 0;
z-index: 9999;
color: #000;
font-weight: 500;
.menu_btn {
width: 414rpx !important;
// background-color: #ffffff; // This is the default title bar background color of the applet
overflow: hidden;
// position: fixed; // Fixed positioning is written in the inline -- The purpose is to remove the problem of scrolling down the page together
.arrowleft {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-160%, -50%) !important;
-webkit-transform: translate(-160%, -50%) !important;
}
.text_box {
width: 1rpx;
height: 20px;
background-color: #ddd;
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%) !important;
-webkit-transform: translate(-50%, -50%) !important;
}
.home {
position: absolute;
top: 50%;
left: 50%;
transform: translate(60%, -50%) !important;
-webkit-transform: translate(60%, -50%) !important;
}
}
}
}
</style>complete , The code can be copied directly
边栏推荐
- 【2022年】江西省研究生数学建模方案、代码
- 项目管理是什么?
- (翻译)使用眉状文本提高标题点击率
- (translation) use eyebrow shaped text to improve Title click through rate
- Clickhouse 消除由group by产生的间隙
- P6773 [NOI2020] 命运(dp、线段树合并)
- (translation) reasons why real-time inline verification is easier for users to make mistakes
- 机器学习10-信念贝叶斯分类器
- 如何学习和阅读代码
- 删除重复的电子邮箱
猜你喜欢

Electron pit Addon
![SQL语句关联表 如何添加关联表的条件 [需要null值或不需要null值]](/img/91/0efbc13597be4dba5b9cf4e8644e35.png)
SQL语句关联表 如何添加关联表的条件 [需要null值或不需要null值]

Leetcode 面试题 17.10. 主要元素

pycharm 软件deployment 灰色 无法点

Zero foundation self-study SQL course | window function

VirtualBox installation enhancements
![[JS] [Nuggets] get people who are not followers](/img/cc/bc897cf3dc1dc57227dbcd8983cd06.png)
[JS] [Nuggets] get people who are not followers

计算特殊奖金

SWT / anr problem - storagemanagerservice stuck

Focusing on green and low carbon, data center cooling has entered a new era of "intelligent cooling"
随机推荐
CorelDRAW 2022中文精简64位直装版下载
@ConfigurationProperties和@Value的区别
机器学习9-通用逼近器径向基函数神经网络,在新观点下审视PDA和SVM
小程序云开发之--微信公众号文章采集篇
先写API文档还是先写代码?
Sitge joined the opengauss open source community to jointly promote the ecological development of the database industry
Delete duplicate email
nacos配置中心使用教程
The image variables in the Halcon variable window are not displayed, and it is useless to restart the software and the computer
对象与对象变量
How to learn and read code
map数组函数
js防抖和节流
P6773 [noi2020] destiny (DP, segment tree merging)
SWT/ANR问题--StorageManagerService卡住
(翻译)实时内联验证更容易让用户犯错的原因
Leetcode(524)——通过删除字母匹配到字典里最长单词
Calculate special bonus
计算特殊奖金
十大券商有哪些?另外想问,现在在线开户安全么?