mirror of
				https://gitee.com/hhyykk/ipms-sjy.git
				synced 2025-11-04 20:28:44 +08:00 
			
		
		
		
	
		
			
	
	
		
			57 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Vue
		
	
	
	
	
	
		
		
			
		
	
	
			57 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Vue
		
	
	
	
	
	
| 
								 | 
							
								<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>
							 |