quanyawei
2023-11-10 0a24ffeb3eff074c8f11e9f94fdf2c2cb4929799
uni_modules/uview-ui/components/u-status-bar/u-status-bar.vue
New file
@@ -0,0 +1,46 @@
<template>
   <view
       :style="[style]"
       class="u-status-bar"
   >
      <slot />
   </view>
</template>
<script>
   import props from './props.js';
   /**
    * StatbusBar 状态栏占位
    * @description 本组件主要用于状态填充,比如在自定导航栏的时候,它会自动适配一个恰当的状态栏高度。
    * @tutorial https://uviewui.com/components/statusBar.html
    * @property {String}         bgColor         背景色 (默认 'transparent' )
    * @property {String | Object}   customStyle      自定义样式
    * @example <u-status-bar></u-status-bar>
    */
   export default {
      name: 'u-status-bar',
      mixins: [uni.$u.mpMixin, uni.$u.mixin, props],
      data() {
         return {
         }
      },
      computed: {
         style() {
            const style = {}
            // 状态栏高度,由于某些安卓和微信开发工具无法识别css的顶部状态栏变量,所以使用js获取的方式
            style.height = uni.$u.addUnit(uni.$u.sys().statusBarHeight, 'px')
            style.backgroundColor = this.bgColor
            return uni.$u.deepMerge(style, uni.$u.addStyle(this.customStyle))
         }
      },
   }
</script>
<style lang="scss" scoped>
   .u-status-bar {
      // nvue会默认100%,如果nvue下,显式写100%的话,会导致宽度不为100%而异常
      /* #ifndef APP-NVUE */
      width: 100%;
      /* #endif */
   }
</style>