提交 2668ced9 编写于 作者: DCloud-WZF's avatar DCloud-WZF 💬

refactor: 优化自定义导航栏页面

上级 1895fb73
...@@ -2,10 +2,14 @@ ...@@ -2,10 +2,14 @@
<view class="uni-navbar"> <view class="uni-navbar">
<view class="uni-navbar-inner" :style="navbarStyle"> <view class="uni-navbar-inner" :style="navbarStyle">
<view class="left-content" @click="back"> <view class="left-content" @click="back">
<text class="uni-icons">{{unicode}}</text> <text :style="{ color: textColor }" class="uni-icons">{{
unicode
}}</text>
</view> </view>
<view class="uni-navbar-content" :class="{'is-left':isLeft}"> <view class="uni-navbar-content" :class="{ 'is-left': isLeft }">
<slot>{{title}}</slot> <text :style="{ color: textColor }">
<slot>{{ title }}</slot>
</text>
</view> </view>
<view class="right-content"> <view class="right-content">
<slot name="right"></slot> <slot name="right"></slot>
...@@ -15,61 +19,65 @@ ...@@ -15,61 +19,65 @@
</template> </template>
<script> <script>
import iconpath from './uniicons.ttf' import iconpath from "./uniicons.ttf";
export default { export default {
name: "uni-navbar", name: "uni-navbar",
props: { props: {
title: { title: {
type: String, type: String,
default: '' default: "",
}, },
isLeft: { isLeft: {
type: Boolean, type: Boolean,
default: false default: false,
} },
textColor: {
type: String,
default: "#000",
},
}, },
data() { data() {
return { return {
statusBarHeight: 0 statusBarHeight: 0,
}; };
}, },
computed: { computed: {
navbarStyle() : string { navbarStyle() : string {
return `margin-top:${this.statusBarHeight}px` return `margin-top:${this.statusBarHeight}px`;
}, },
unicode() : string { unicode() : string {
return '\ue600' return "\ue600";
} },
}, },
created() { created() {
uni.loadFontFace({ uni.loadFontFace({
global: false, global: false,
family: 'UniIconsFontFamily', family: "UniIconsFontFamily",
source: "url(" + iconpath + ")", source: `url("${iconpath}")`,
success() { }, success() { },
fail(err) { fail(err) {
console.log(err); console.log(err);
}, },
}) });
const sys = uni.getSystemInfoSync() const sys = uni.getSystemInfoSync();
const statusBarHeight = sys.statusBarHeight const statusBarHeight = sys.statusBarHeight;
this.statusBarHeight = statusBarHeight this.statusBarHeight = statusBarHeight;
}, },
mounted() { mounted() {
// TODO 暂时加定时器,否则不生效 // TODO 暂时加定时器,否则不生效
setTimeout(() => { setTimeout(() => {
uni.setNavigationBarColor({ uni.setNavigationBarColor({
frontColor: '#000000', frontColor: "#000000",
backgroundColor: '#ffffff' backgroundColor: "#ffffff",
}) });
}, 100) }, 100);
}, },
methods: { methods: {
back() { back() {
uni.navigateBack({}) uni.navigateBack({});
}
}, },
} },
};
</script> </script>
<style> <style>
...@@ -79,10 +87,12 @@ ...@@ -79,10 +87,12 @@
font-style: normal; font-style: normal;
color: #333; color: #333;
} }
.uni-navbar { .uni-navbar {
border: 1px #eee solid; border: 1px #eee solid;
background-color: #fff; background-color: #007aff;
} }
.uni-navbar-inner { .uni-navbar-inner {
position: relative; position: relative;
display: flex; display: flex;
...@@ -112,6 +122,7 @@ ...@@ -112,6 +122,7 @@
justify-content: center; justify-content: center;
align-items: center; align-items: center;
} }
.is-left { .is-left {
justify-content: flex-start; justify-content: flex-start;
} }
......
<template>
<view>
<view class="custom-navigation">
<text
class="back-icon"
@click="back"
:style="`color:${navigationBarTextColor}`"
>{{ backIcon }}</text
>
<text class="title" :style="`color:${navigationBarTextColor}`"
>自定义导航栏</text
>
</view>
<page-head title="setCustomNavigationBarColor"></page-head>
<view class="uni-padding-wrap uni-common-mt">
<button @tap="setNavigationBarColor1" class="uni-btn">
设置自定义导航栏前景色白色
</button>
<button @tap="setNavigationBarColor2" class="uni-btn">
设置自定义导航栏前景色黑色
</button>
</view>
</view>
</template>
<script lang="uts">
import { state, setLifeCycleNum } from '@/store/index.uts'
export default {
data() {
return {
backIcon: '\ue582',
navigationBarTextColor: '#fff'
}
},
onShow(){
uni.loadFontFace({
family: 'UniFontFamily',
source: 'url(static/font/uni.ttf)'
})
},
methods: {
back(){
uni.navigateBack()
},
setNavigationBarColor1() {
uni.setNavigationBarColor({
frontColor: '#ffffff',
backgroundColor: '#0000',
success: () => {
this.navigationBarTextColor = '#fff'
console.log('setNavigationBarColor success')
this.setLifeCycleNum(state.lifeCycleNum + 1)
},
fail: () => {
console.log('setNavigationBarColor fail')
this.setLifeCycleNum(state.lifeCycleNum - 1)
},
complete: () => {
console.log('setNavigationBarColor complete')
this.setLifeCycleNum(state.lifeCycleNum + 1)
}
})
},
setNavigationBarColor2() {
uni.setNavigationBarColor({
frontColor: '#000000',
backgroundColor: '#0000',
success: () => {
this.navigationBarTextColor = '#000'
console.log('setNavigationBarColor success')
this.setLifeCycleNum(state.lifeCycleNum + 1)
},
fail: () => {
console.log('setNavigationBarColor fail')
this.setLifeCycleNum(state.lifeCycleNum - 1)
},
complete: () => {
console.log('setNavigationBarColor complete')
this.setLifeCycleNum(state.lifeCycleNum + 1)
}
})
},
// 自动化测试
getLifeCycleNum(): number {
return state.lifeCycleNum
},
// 自动化测试
setLifeCycleNum(num: number) {
setLifeCycleNum(num)
},
},
}
</script>
<style>
.custom-navigation {
padding-top: 40px;
padding-bottom: 10px;
background-color: #007aff;
}
.custom-navigation > .title {
margin: 0 auto;
}
.custom-navigation > .back-icon {
position: absolute;
font-family: UniFontFamily;
font-size: 20px;
left: 10px;
}
</style>
...@@ -66,7 +66,7 @@ export default { ...@@ -66,7 +66,7 @@ export default {
}, },
goCustomNavigation(){ goCustomNavigation(){
uni.navigateTo({ uni.navigateTo({
url: '/pages/API/set-navigation-bar-color/set-custom-navigation-bar-color' url: '/pages/template/navbar-lite/navbar-lite'
}) })
} }
}, },
......
const CURRENT_PAGE_PATH = const CURRENT_PAGE_PATH =
"/pages/API/set-navigation-bar-color/set-custom-navigation-bar-color"; "/pages/template/navbar-lite/navbar-lite";
describe("setCustomNavigationBarColor", () => { describe("setCustomNavigationBarColor", () => {
let page; let page;
......
<template> <template>
<view class="content"> <view class="content">
<uni-navbar-lite :title="title" :is-left="isLeft"></uni-navbar-lite> <uni-navbar-lite :title="title" :is-left="isLeft" :text-color="navigationBarTextColor"></uni-navbar-lite>
<scroll-view class="scroll-view" scroll-y="true"> <scroll-view class="scroll-view" scroll-y="true">
<view class="content-item" @click="onClick"> <view class="content-item" @click="onClick">
<text>点击此处,将标题切换为{{isLeft?'居中':'左侧'}}显示</text> <text>点击此处,将标题切换为{{isLeft?'居中':'左侧'}}显示</text>
...@@ -9,23 +9,79 @@ ...@@ -9,23 +9,79 @@
<text class="text">内容:{{item}}</text> <text class="text">内容:{{item}}</text>
</view> </view>
<input/> <input/>
<view class="uni-padding-wrap uni-common-mt">
<button @tap="setNavigationBarColor1" class="uni-btn">
设置自定义导航栏前景色白色
</button>
<button @tap="setNavigationBarColor2" class="uni-btn">
设置自定义导航栏前景色黑色
</button>
</view>
</scroll-view> </scroll-view>
</view> </view>
</template> </template>
<script> <script>
import { state, setLifeCycleNum } from '@/store/index.uts'
export default { export default {
data() { data() {
return { return {
title: 'Hello uni-app', title: 'Hello uni-app',
isLeft: false isLeft: false,
navigationBarTextColor: '#000'
} }
}, },
onLoad() { },
methods: { methods: {
onClick(){ onClick(){
this.isLeft = !this.isLeft this.isLeft = !this.isLeft
},
setNavigationBarColor1() {
uni.setNavigationBarColor({
frontColor: '#ffffff',
backgroundColor: '#0000',
success: () => {
this.navigationBarTextColor = '#fff'
console.log('setNavigationBarColor success')
this.setLifeCycleNum(state.lifeCycleNum + 1)
},
fail: () => {
console.log('setNavigationBarColor fail')
this.setLifeCycleNum(state.lifeCycleNum - 1)
},
complete: () => {
console.log('setNavigationBarColor complete')
this.setLifeCycleNum(state.lifeCycleNum + 1)
}
})
},
setNavigationBarColor2() {
uni.setNavigationBarColor({
frontColor: '#000000',
backgroundColor: '#0000',
success: () => {
this.navigationBarTextColor = '#000'
console.log('setNavigationBarColor success')
this.setLifeCycleNum(state.lifeCycleNum + 1)
},
fail: () => {
console.log('setNavigationBarColor fail')
this.setLifeCycleNum(state.lifeCycleNum - 1)
},
complete: () => {
console.log('setNavigationBarColor complete')
this.setLifeCycleNum(state.lifeCycleNum + 1)
} }
})
},
// 自动化测试
getLifeCycleNum(): number {
return state.lifeCycleNum
},
// 自动化测试
setLifeCycleNum(num: number) {
setLifeCycleNum(num)
},
} }
} }
</script> </script>
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册