65 lines
1.0 KiB
Vue
65 lines
1.0 KiB
Vue
![]() |
<template>
|
||
|
<view
|
||
|
class="cl-status-bar__wrap"
|
||
|
:class="[
|
||
|
{
|
||
|
'is-sticky': sticky,
|
||
|
},
|
||
|
]"
|
||
|
:style="{
|
||
|
height,
|
||
|
}"
|
||
|
>
|
||
|
<view
|
||
|
class="cl-status-bar"
|
||
|
:style="{
|
||
|
backgroundColor,
|
||
|
}"
|
||
|
></view>
|
||
|
</view>
|
||
|
</template>
|
||
|
|
||
|
<script lang="ts">
|
||
|
import { computed, defineComponent } from "vue";
|
||
|
import { useCool } from "/@/cool";
|
||
|
|
||
|
export default defineComponent({
|
||
|
name: "cl-status-bar",
|
||
|
|
||
|
props: {
|
||
|
// 背景颜色
|
||
|
backgroundColor: String,
|
||
|
// 是否吸顶
|
||
|
sticky: {
|
||
|
type: Boolean,
|
||
|
default: true,
|
||
|
},
|
||
|
},
|
||
|
|
||
|
setup(props) {
|
||
|
const { statusBarHeight } = uni.getSystemInfoSync();
|
||
|
const { router } = useCool();
|
||
|
|
||
|
// 状态栏高度
|
||
|
const height = computed(() => {
|
||
|
return `${statusBarHeight}px`;
|
||
|
});
|
||
|
|
||
|
// 背景色
|
||
|
const backgroundColor = computed(() => {
|
||
|
return (
|
||
|
props.backgroundColor ||
|
||
|
router.info()?.style?.navigationBarBackgroundColor ||
|
||
|
router.globalStyle?.navigationBarBackgroundColor ||
|
||
|
"#ffffff"
|
||
|
);
|
||
|
});
|
||
|
|
||
|
return {
|
||
|
height,
|
||
|
backgroundColor,
|
||
|
};
|
||
|
},
|
||
|
});
|
||
|
</script>
|