---
outline: [2, 3]
---
# HtmlPanel
- 源文件:`packages/sdk/src/mesh/HtmlPanel.ts`
- 文档位置:`packages/docs/api/mesh/HtmlPanel.md`
## 枚举:`CssType`
- 作用:CSS渲染类型枚举
| 枚举项 | 值 | 说明 |
| --- | --- | --- |
| `CSS2D` | `'css2d'` | 枚举值 `CSS2D`。 |
| `CSS3D` | `'css3d'` | 枚举值 `CSS3D`。 |
| `CSS3DSprite` | `'css3dsprite'` | 枚举值 `CSS3DSprite`。 |
## 类:`HtmlPanel`
- 作用:HTML面板基础类
### 构造函数
#### `new HtmlPanel(public type: CssType = CssType.CSS3D)`
- 作用:构造函数
- 入参:
| 参数名 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| `type` | `CssType` | 否 | CSS渲染类型 |
- 出参:`HtmlPanel`
- 返回说明:返回当前类实例。
### 属性
| 属性名 | 可见性 | 类型 | 作用 |
| --- | --- | --- | --- |
| `container` | `public` | `HTMLDivElement` | 用于保存 `container` 对应的数据。 |
| `cssObject` | `public` | `THREE.Object3D` | 用于保存 `cssObject` 对应的数据。 |
| `isVisible` | `public` | `boolean` | 用于标记 `isVisible` 的启用状态。 |
| `position` | `public` | `THREE.Vector3` | 位置数据。 |
### 方法
#### `getCssObject(): THREE.Object3D`
- 作用:获取CSS对象
- 入参:无
- 出参:`THREE.Object3D`
- 返回说明:返回 `THREE.Object3D`。
#### `getUniqueId(): string`
- 作用:获取唯一ID
- 入参:无
- 出参:`string`
- 返回说明:CSS对象的UUID
#### `show(): void`
- 作用:显示面板
- 入参:无
- 出参:`void`
- 返回说明:无返回值。
#### `hide(): void`
- 作用:隐藏面板
- 入参:无
- 出参:`void`
- 返回说明:无返回值。
#### `toggle(): void`
- 作用:切换面板可见性
- 入参:无
- 出参:`void`
- 返回说明:无返回值。
#### `updatePosition(position: THREE.Vector3): void`
- 作用:更新面板位置
- 入参:
| 参数名 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| `position` | `THREE.Vector3` | 是 | 新位置 |
- 出参:`void`
- 返回说明:无返回值。
#### `updateContent(content: string): void`
- 作用:更新面板内容
- 入参:
| 参数名 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| `content` | `string` | 是 | 新内容 |
- 出参:`void`
- 返回说明:无返回值。
#### `getVisible(): boolean`
- 作用:获取弹窗可见性
- 入参:无
- 出参:`boolean`
- 返回说明:返回布尔结果。
#### `changeCssType(type: CssType): THREE.Object3D`
- 作用:动态修改CSS类型
- 入参:
| 参数名 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| `type` | `CssType` | 是 | 新的CSS渲染类型 |
- 出参:`THREE.Object3D`
- 返回说明:新的CSS对象
#### `getCssType(): CssType`
- 作用:获取当前CSS类型
- 入参:无
- 出参:`CssType`
- 返回说明:返回 `CssType`。
#### `dispose(): void`
- 作用:销毁面板,清理所有资源
- 入参:无
- 出参:`void`
- 返回说明:无返回值。
#### `createCssObject(): void`
- 作用:创建CSS对象
- 入参:无
- 出参:`void`
- 返回说明:无返回值。
## 构造示例
- 来源:`packages/demo/src/components/htmlPanel/DrillingModal.ts`
```ts
/**
* 钻进信息面板类
*/
export class DrillingModal extends HtmlPanel {
private drillingData: IDrillingData = {
pipeName: '',
drillingSpeed: 0,
currentDepth: 0,
targetDepth: 0,
progress: 0,
pipeRadius: 0,
status: 'stopped'
};
```
## 函数示例
### `HtmlPanel.getCssObject`
- 来源:`packages/demo/src/panels/GoldMineScene/VentilationFillingPanel.vue`
```ts
if (fillingHtmlPanel) {
viewer?.scene.remove(fillingHtmlPanel.getCssObject());
fillingHtmlPanel = null;
}
```
### `HtmlPanel.getUniqueId`
- 来源:`packages/demo/src/htmlPanel/GoldMineScene/AirSupplyHtmlPanel.ts`
```ts
/**
* 构造函数
* @param type CSS渲染类型
*/
constructor(type: CssType = CssType.CSS2D) {
super(type);
this.uuid = this.getUniqueId();
this.initContent();
this.attachDeleteEvent();
}
```
### `HtmlPanel.show`
- 来源:`packages/demo/src/panels/GoldMineScene/VentilationFillingPanel.vue`
```ts
// 初始化数据
fillingHtmlPanel.updateData({
progress: fillingStatus.value.progress,
currentTime: (Date.now() - fillingStatus.value.startTime) / 1000,
endTime: fillingParams.value.endTime,
material: fillingParams.value.material,
fillingRate: fillingParams.value.fillingRate,
pressure: fillingParams.value.pressure,
status: fillingStatus.value.isRunning ? 'running' : 'stopped'
});
fillingHtmlPanel.updatePosition(new THREE.Vector3(position.x, position.y + 1, position.z));
fillingHtmlPanel.show();
viewer?.scene.add(fillingHtmlPanel.getCssObject());
};
```
## Demo 参考
### `CssType`
以下示例文件中可以看到该 API 的实际调用方式:
- `packages/demo/src/components/htmlPanel/DrillingModal.ts`
- `packages/demo/src/components/htmlPanel/PrintModelModal.ts`
- `packages/demo/src/components/htmlPanel/RuptureEventModal.ts`
- `packages/demo/src/components/htmlPanel/SensorModal.ts`
- `packages/demo/src/components/htmlPanel/SingleSensorModal.ts`
- `packages/demo/src/components/htmlPanel/TunnelModal.ts`
- `packages/demo/src/disasterFormationPanel/TunnelScene/RockBurstPanel.vue`
- `packages/demo/src/disasterFormationPanel/TunnelScene/RuptureEventPanel.vue`
### `HtmlPanel`
以下示例文件中可以看到该 API 的实际调用方式:
- `packages/demo/src/components/htmlPanel/DrillingModal.ts`
- `packages/demo/src/components/htmlPanel/PrintModelModal.ts`
- `packages/demo/src/components/htmlPanel/RuptureEventModal.ts`
- `packages/demo/src/components/htmlPanel/SensorModal.ts`
- `packages/demo/src/components/htmlPanel/SingleSensorModal.ts`
- `packages/demo/src/components/htmlPanel/TunnelModal.ts`
- `packages/demo/src/htmlPanel/GoldMineScene/AirSupplyHtmlPanel.ts`
- `packages/demo/src/htmlPanel/GoldMineScene/DrillingHtmlPanel.ts`