70 lines
1.3 KiB
Vue
70 lines
1.3 KiB
Vue
|
<template>
|
||
|
<view>
|
||
|
<tui-navigation-bar splitLine @init="initNavigation" @change="opacityChange" :scrollTop="scrollTop" :title="title" :backgroundColor="backgroundColor" :color="color">
|
||
|
<view class="tui-header-icon" :style="{ marginTop: top + 'px' }"><tui-icon name="arrowleft" :color="opacity > 0.85 ? color : backgroundColor" @click="back"></tui-icon></view>
|
||
|
</tui-navigation-bar>
|
||
|
</view>
|
||
|
</template>
|
||
|
|
||
|
<script>
|
||
|
export default {
|
||
|
name:"topbar",
|
||
|
props: {
|
||
|
title: {
|
||
|
type: String,
|
||
|
default: ''
|
||
|
},
|
||
|
color: {
|
||
|
type: String,
|
||
|
default: '#333'
|
||
|
},
|
||
|
backgroundColor: {
|
||
|
type: String,
|
||
|
default: '#fff'
|
||
|
},
|
||
|
//滚动条滚动距离
|
||
|
scrollTop: {
|
||
|
type: [Number, String],
|
||
|
default: 0
|
||
|
},
|
||
|
},
|
||
|
data() {
|
||
|
return {
|
||
|
top: 0, //标题图标距离顶部距离
|
||
|
opacity: 0,
|
||
|
scrollTop: 0.5,
|
||
|
};
|
||
|
},
|
||
|
onPageScroll(e) {
|
||
|
this.scrollTop = e.scrollTop;
|
||
|
},
|
||
|
methods: {
|
||
|
initNavigation(e) {
|
||
|
this.opacity = e.opacity;
|
||
|
this.top = e.top;
|
||
|
},
|
||
|
opacityChange(e) {
|
||
|
this.opacity = e.opacity;
|
||
|
},
|
||
|
back() {
|
||
|
uni.navigateBack()
|
||
|
},
|
||
|
}
|
||
|
}
|
||
|
</script>
|
||
|
|
||
|
<style>
|
||
|
.tui-header-icon {
|
||
|
width: 100%;
|
||
|
position: fixed;
|
||
|
top: 0;
|
||
|
padding: 0 12rpx;
|
||
|
display: flex;
|
||
|
align-items: center;
|
||
|
height: 32px;
|
||
|
transform: translateZ(0);
|
||
|
z-index: 99999;
|
||
|
box-sizing: border-box;
|
||
|
}
|
||
|
</style>
|