当前位置:网站首页>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
边栏推荐
- SWT/ANR问题--Dump时间过长导致的SWT
- pycharm 软件deployment 灰色 无法点
- SWT / anr problem - binder stuck
- 十大券商有哪些?另外想问,现在在线开户安全么?
- 现在开户有优惠吗?另外,手机开户安全么?
- Alphabet-Rearrange-Inator 3000(字典树自定义排序)
- Delete duplicate email
- How to realize the scene linkage of intelligent lock, lamp and intelligent curtain motor in zhiting?
- I want to know how to open a stock account? Is it safe to open an account online?
- halcon数组的一些使用
猜你喜欢

CorelDRAW 2022 Chinese Simplified 64 bit direct download

Machine learning 9-universal approximator radial basis function neural network, examining PDA and SVM from a new perspective

如何在智汀中實現智能鎖與燈、智能窗簾電機場景聯動?

RocketQA:通过跨批次负采样(cross-batch negatives)、去噪的强负例采样(denoised hard negative sampling)与数据增强(data augment

Calculate special bonus

手机edge浏览器无法打开三方应用

Short message sending solution in medical his industry

Video tutorial | Chang'an chain launched a series of video tutorial collections (Introduction)

pycharm 软件deployment 灰色 无法点
The latest CSDN salary increase technology stack in 2022 overview of APP automated testing
随机推荐
LabVIEW计算相机图像传感器分辨率以及镜头焦距
LabVIEW calculates the camera image sensor resolution and lens focal length
The mobile edge browser cannot open the third-party application
A preliminary understanding of operator overloading
AS400 大廠面試
Electron pit Addon
Pycharm 打开远程目录 Remote Host
AS400 entretien d'usine
SWT / anr issues - ams/wms
P6773 [noi2020] destiny (DP, segment tree merging)
Is there any discount for opening an account now? In addition, is it safe to open a mobile account?
[fundamentals of wireless communication-15]: illustrated mobile communication technology and application development-3-overview of digital communication 2G GSM, CDMA, 3G wdcma/cdma200/td-scdma, 4G LTE
修复表中的名字(首字符大写,其他小写)
运算符重载的初识
C # generates PPK files in putty format (supports passphrase)
[multi source BFS] 934 Shortest Bridge
How to learn and read code
How does ZABBIX configure alarm SMS? (alert SMS notification setting process)
AS400 large factory interview
【毕业季·进击的技术er】--毕业到工作小结