| 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
 | | <template>  |  |     <view  |  |         class="u-safe-bottom"  |  |         :style="[style]"  |  |         :class="[!isNvue && 'u-safe-area-inset-bottom']"  |  |     >  |  |     </view>  |  | </template>  |  |   |  | <script>  |  |     import props from "./props.js";  |  |     /**  |  |      * SafeBottom 底部安全区  |  |      * @description 这个适配,主要是针对IPhone X等一些底部带指示条的机型,指示条的操作区域与页面底部存在重合,容易导致用户误操作,因此我们需要针对这些机型进行底部安全区适配。  |  |      * @tutorial https://www.uviewui.com/components/safeAreaInset.html  |  |      * @property {type}        prop_name  |  |      * @property {Object}    customStyle    定义需要用到的外部样式  |  |      *  |  |      * @event {Function()}  |  |      * @example <u-status-bar></u-status-bar>  |  |      */  |  |     export default {  |  |         name: "u-safe-bottom",  |  |         mixins: [uni.$u.mpMixin, uni.$u.mixin, props],  |  |         data() {  |  |             return {  |  |                 safeAreaBottomHeight: 0,  |  |                 isNvue: false,  |  |             };  |  |         },  |  |         computed: {  |  |             style() {  |  |                 const style = {};  |  |                 // #ifdef APP-NVUE  |  |                 // nvue下,高度使用js计算填充  |  |                 style.height = uni.$u.addUnit(uni.$u.sys().safeAreaInsets.bottom, 'px');  |  |                 // #endif  |  |                 return uni.$u.deepMerge(style, uni.$u.addStyle(this.customStyle));  |  |             },  |  |         },  |  |         mounted() {  |  |             // #ifdef APP-NVUE  |  |             // 标识为是否nvue  |  |             this.isNvue = true;  |  |             // #endif  |  |         },  |  |     };  |  | </script>  |  |   |  | <style lang="scss" scoped>  |  |     .u-safe-bottom {  |  |         /* #ifndef APP-NVUE */  |  |         width: 100%;  |  |         /* #endif */  |  |     }  |  | </style>  | 
 |