| 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> | 
 |