安装
npm install @aashu-dubey/capacitor-statusbar-safe-area
npx cap sync
使用量
import { SafeArea } from '@aashu-dubey/capacitor-statusbar-safe-area';
const getStatusBarHeight = async () => {
const { height } = await SafeArea.getStatusBarHeight();
return height; // Ex. 29.090909957885742
};
const getSafeAreaInsets = async () => {
const insets = await SafeArea.getSafeAreaInsets();
return insets; // Ex. { "bottom":34, "top":47, "right":0, "left":0 }
};
CSS 变量
软件包还显示 CSS 变量,因为您需要调用 injectCSSVariables 方法在您的 platform.ready() 函数或当应用程序系统 UI 可见度改变时
import { SafeAreaController } from '@aashu-dubey/capacitor-statusbar-safe-area';
const injectSafeAreaVariables = () => {
SafeAreaController.injectCSSVariables();
};
然后可以在您的 CSS 文件中使用
.myContainer {
// '--status-bar-height' & '--safe-area-inset-top' would most probably be same
margin-top: var(--status-bar-height);
}
.myElement {
padding-top: var(--safe-area-inset-top);
padding-left: var(--safe-area-inset-left);
padding-right: var(--safe-area-inset-right);
padding-bottom: var(--safe-area-inset-bottom);
}
HTML 标记
除上述选项外,该插件还导出 a <safe-area> 自定义网络组件.
登记和使用
在您的应用程序初始化中注册自定义元素( 例如) . main.ts, (中文(简体) ), app.component.ts,或根组件),或仅在组件内使用:
import { registerSafeAreaElement } from '@aashu-dubey/capacitor-statusbar-safe-area';
registerSafeAreaElement();
然后将您想要应用的安全区域间距的内容与 <safe-area> 标签 :
<safe-area>
<!-- Content here -->
</safe-area>
属性
有两个属性,可以和 safe-area 网络组件控制它的行为, mode 打开 edges。 。 。 .
<safe-area mode="margin" edges="top,left,right"></safe-area>
更多细节 这里。 。 。 .
框架实例
角质
你会得到一个错误 <safe-area> 是Angular 编译器的未知元素。 通过添加 CUSTOM_ELEMENTS_SCHEMA 到您的独立组件或模块计划.
1. 独立的构成部分(Angular 14+)
// your.component.ts
import { Component, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
import { registerSafeAreaElement } from '@aashu-dubey/capacitor-statusbar-safe-area';
registerSafeAreaElement();
@Component({
selector: 'app-your-component',
standalone: true,
template: `
<safe-area>
<!-- Other content -->
</safe-area>
`,
schemas: [CUSTOM_ELEMENTS_SCHEMA],
})
export class YourComponent {}
2. 恩格穆尔
修改宣布您组件的模块以允许自定义元素 :
// your-component.module.ts
import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';
@NgModule({
schemas: [CUSTOM_ELEMENTS_SCHEMA],
})
export class YourComponentModule {}
然后在组件中注册自定义元素 :
// app.component.ts or your-component.ts
import { registerSafeAreaElement } from '@aashu-dubey/capacitor-statusbar-safe-area';
registerSafeAreaElement();
<!-- your.component.html -->
<safe-area>
<!-- Other content -->
</safe-area>
反应
import { registerSafeAreaElement } from '@aashu-dubey/capacitor-statusbar-safe-area';
registerSafeAreaElement();
const MyComponent = () => {
return <safe-area>{/* Other content */}</safe-area>;
};
您可能需要创建一个 *.d.ts react 中自定义元素的文件 :
import type { SafeAreaHTMLProps } from '@aashu-dubey/capacitor-statusbar-safe-area';
declare module 'react' {
namespace JSX {
interface IntrinsicElements {
'safe-area': React.DetailedHTMLProps<React.HTMLAttributes<HTMLElement>, HTMLElement> & SafeAreaHTMLProps;
}
}
}
export {};
阴道
<script setup lang="ts">
import { registerSafeAreaElement } from '@aashu-dubey/capacitor-statusbar-safe-area';
registerSafeAreaElement();
</script>
<template>
<safe-area>
<!-- Other content -->
</safe-area>
</template>
确保您启用 承认本地习惯元素 内 vite.config.ts数字 :
// vite.config.ts > plugins
vue({
template: {
compilerOptions: {
isCustomElement: (tag) => tag === 'safe-area',
},
},
}),
还有,为了 合适的打字支持 内 .vue <template>创建一个 *.d.ts 文件并添加以下代码:
import type { HTMLAttributes, PublicProps } from 'vue';
import type { SafeAreaHTMLProps } from '@aashu-dubey/capacitor-statusbar-safe-area';
type DefineCustomElement<
ElementType extends HTMLElement,
SelectedAttributes extends keyof ElementType = keyof ElementType,
> = new () => ElementType & {
$props: HTMLAttributes & Partial<Pick<ElementType, SelectedAttributes>> & PublicProps;
};
type SafeAreaAttributes = 'mode' | 'edges';
declare module 'vue' {
interface GlobalComponents {
'safe-area': DefineCustomElement<SafeAreaHTMLProps, SafeAreaAttributes>;
}
}
export {};
与安全部门改革
插件及其功能是针对客户端的,在服务器一侧使用时可能会出错 10号 财务报告和审定财务报表 11号,因此始终确保只访问客户端的插件.
以下是一些可能使用插件的解决方案的例子 :
类型脚本 / DOM API
软件包自动注册 'safe-area' 内 HTMLElementTagNameMap标准DOM方法,例如 document.querySelector('safe-area') 财务报告和审定财务报表 document.createElement('safe-area') 将自动输入为 SafeAreaElement数字 :
const el = document.querySelector('safe-area'); // typed as SafeAreaElement | null
if (el) {
el.mode = 'margin';
el.edges = 'top,bottom';
}
电容版本支持
| 电容器 | 插件版本 |
|---|---|
| v8.x (中文(简体) ) | 5.0.0 (单位:千美元) |
| v7.x (中文(简体) ) | 4.0.0 (单位:千美元) |
| v6.x (中文(简体) ) | 3.0.0 (单位:千美元) |
| 页:1 | 2.1.0 国家 |
| v4.x (英语) | = 1.1.0 = 2.0.0 (中文(简体) ) |
| ưμ㼯a | <= 1.0.1 |
API 密码
获取状态BarHeight ()
getStatusBarHeight() => Promise<{ height: number; }>
在Android和iOS上获取状态栏高度,并在Web上返回0.
回返情况: Promise<{ height: number; }>
获取安全区设置( C)
getSafeAreaInsets() => Promise<SafeAreaInset>
获取Android和iOS的安全区域设置,并在Web上返回0所有.
回返情况: Promise<SafeAreaInset>
接口
安全区设置
| Prop | 类型 | 说明 |
|---|---|---|
top | number | 安全区域内置值位于顶端 . |
bottom | number | 安全区域在底部内置值 . |
left | number | 左侧的安全区域设置值 . |
right | number | 安全区域在右侧设置值 . |
安全区HTMLProps
| Prop | 类型 | 默认 | 说明 |
|---|---|---|---|
mode | 'padding' | 'margin' | 'padding' | 是否将安全区域设置为 padding 或者说 margin。 。 。 . |
edges | string | 所有边缘 | 以逗号分隔的边缘列表来应用设置 . 例如,只应用上,上,下和下, edges="top,left,right"。 。 。 . |