ScifiPanelReactor
科幻面板-反应堆 是 TechUI Scifi 面板系列中的动态活跃型容器。
它移植并重构自开源项目 @jiaminghi/data-view (原型 dv-border-box-1)。它采用了经典的 “四角能量约束 (Four-corner Energy Containment)” 设计语言。视觉重心被分散至面板的四个角落,由多组精密的几何线条构建出稳固的“机械抓手”形态 ,并内置了呼吸闪烁动画。
这种设计在提供清晰边界感的同时,通过角落的动态律动持续吸引用户注意力。它仿佛是一个正在运行的小型反应堆,非常适合作为 关键指标卡片 (KPI Cards)、独立功能模块 或 悬浮弹窗 的外框,为静态页面注入持续的能量感。
提示:该组件可以通过
ScifiPanelDV2或其语义化别名ScifiPanelReactor进行调用。
基础用法
默认形态
默认情况下,DV2 会在四个角落渲染复杂的科技风装饰,并带有自动的呼吸闪烁效果。边框的连接线相对较细,突出了角部的视觉权重。
<template>
<div style="width: 400px; height: 300px;">
<ScifiPanelReactor>
<div class="card-content">
<span class="label">MODULE 01</span>
</div>
</ScifiPanelReactor>
</div>
</template>视觉变体
DV2 的形态变化主要围绕“装饰复杂度”和“动态效果”展开。
动画控制
四个角部的装饰线条默认带有呼吸动画(透明度周期性变化)。
- True (默认): 开启呼吸效果,界面更具生命力。
- False: 静态显示,适合低功耗模式或不需要打扰用户的场景。
<template>
<div class="grid">
<ScifiPanelReactor />
<ScifiPanelReactor :animation="false" />
</div>
</template>极简与边框 (Decoration & Border)
- borderd: 控制连接四个角的细边框是否显示。如果设为
false,则仅保留四个角落的装饰,视觉更加开放。 - decoration: 控制角部装饰的细节。
- borderWidth: 调整边框线条的粗细。
<template>
<ScifiPanelReactor
:borderd="false"
:backgroundOpacity="0.5"
>
<div class="content">OPEN VIEW</div>
</ScifiPanelReactor>
<ScifiPanelReactor :borderWidth="3" />
</template>发光效果 (Glow)
开启 glow 后,四个角落的呼吸灯效果会叠加高亮光晕,形成类似“能量脉冲”的视觉冲击力。
<template>
<ScifiPanelReactor
:glow="true"
className="dv2-pulse"
/>
</template>CSS变量
DV2 的角部装饰由两条主色定义(边框色 + 高亮色)。通过 CSS 变量可以轻松定制。
案例:幽灵紫风格 (Phantom Purple)
这种风格利用深紫色背景和高亮边框,营造神秘的科技感。
<template>
<ScifiPanelReactor
className="panel-phantom"
:glow="true"
:backgroundOpacity="0.9"
>
<div class="info-box">
SYSTEM LOCKED
</div>
</ScifiPanelReactor>
</template>
<style lang="less">
.panel-phantom {
/* 基础边框色:紫色 */
--sf-panel-bd: #7c3aed;
/* 角部装饰/高亮色:亮青 (形成撞色) 或 浅紫 */
--sf-panel-hlite: #a78bfa;
/* 背景色:深紫黑 */
--sf-panel-bg: rgba(20, 0, 30, 0.9);
/* 发光色 */
--sf-panel-glow: #8b5cf6;
}
</style>API 参考
Props
| 属性名 | 说明 | 类型 | 默认值 |
|---|---|---|---|
| animation | 动画开关。是否开启角部的呼吸/闪烁动画 | Boolean | true |
| decoration | 装饰开关。是否显示角部的复杂细节 | Boolean | true |
| borderd | 边框开关。是否显示连接四角的细线条 | Boolean | true |
| borderWidth | 边框线条宽度 (px) | Number | — |
| backgroundOpacity | 背景不透明度 (0-1) | Number | — |
| backgroundBlur | 是否开启背景毛玻璃 | Boolean | false |
| glow | 是否开启外发光 | Boolean | false |
| className | 自定义容器类名 | String | — |
CSS Variables
您可以在组件的父级或通过 className 覆盖以下变量,以控制组件的配色与外观。
| 变量名 | 说明 | 默认值参考 |
|---|---|---|
| --sf-panel-bg | 面板背景填充色 | var(--scifi-bg) |
| --sf-panel-bgop | 背景不透明度 | var(--cpt-panel-bgop, 1) |
| --sf-panel-bd | 边框线条颜色 | var(--scifi-bd) |
| --sf-panel-bdw | 边框线条宽度 | var(--cpt-panel-bdw, 1px) |
| --sf-panel-fc | 标题文字颜色 | var(--scifi-fc) |
| --sf-panel-hlite | 高光颜色 | var(--scifi-hlite) |
| --sf-panel-focus | 焦点颜色 | var(--scifi-focus) |
| --sf-panel-glow | 内发光颜色 | var(--scifi-focus) |
| --sf-panel-glowop | 内发光不透明度 | var(--cpt-panel-glowop, .5) |
| --sf-panel-shadow | 容器阴影 | var(--shadow-weak) |
| --sf-panel-scale | 整体缩放比例 | var(--cpt-panel-scale) |
致谢
此组件移植自开源组件 jiaminghi/data-view,在此基础上基于 TechUI 全局主题,进行了深度定制,并添加了诸多的API,大大增强了本组件的能力。
在此,向作者 JiaMing 致以诚挚的谢意与敬意!