--- title: Hero 背景效果 icon: icon-park-outline:effects createTime: 2025/10/24 15:35:14 permalink: /guide/custom-home/hero-effect/ badge: 新 --- ## 概述 对于大多数的站点而言,一个 **炫酷好看** 首页首屏,能够更容易的吸引用户停留下来。 但实现 **炫酷好看** 往往需要比较复杂的技术成本,以及一些不错的灵感。 主题对 **首页** 的 **Hero** 部分,内置了一系列 **炫酷好看** 的背景效果, 通过简单的配置即可应用到你的站点首页中: ```md {6,8-10} --- pageLayout: home home: true config: - type: hero full: true effect: tint-plate effectConfig: key: value --- ``` ::: important 当且仅当 `type: hero` 时,主题会应用 `effect` 配置的效果。 ::: `effect` 支持以下可选值: - [tint-plate](#tint-plate) - [prism](#prism) - [pixel-blast](#pixel-blast) - [hyper-speed](#hyper-speed) - [liquid-ether](#liquid-ether) - [dot-grid](#dot-grid) - [iridescence](#iridescence) - [orb](#orb) - [beams](#beams) - [lightning](#lightning) - [dark-veil](#dark-veil) `effectConfig` 需要根据不同的 `effect` 值,进行不同的配置。通常你不需要配置,主题会自动应用预设配置。 :::important 重要说明 主题内置的效果,得益于优秀开源项目 [vue-bits](https://vue-bits.dev/)。 遵循 MIT 协议,复制并修改其中的代码到主题中。 ::: ## 强制深色模式 大部分背景效果在 **深色模式** 下表现更加出色,因此建议开启 [深色模式](../../config/theme.md#appearance) 以获得最佳体验。 但对于文档部分,也许 **浅色模式** 才是你想要的,因此主题在 `hero` 中提供了 `forceDark` 选项, 仅强制将首页强制变更为 **深色模式**,而不影响其他页面的颜色模式。 ```md {8} --- pageLayout: home home: true config: - type: hero full: true forceDark: true effect: lightning --- ``` ## 背景动态效果 ::: important 不同的效果可能会依赖 `three` 或 `gsap` 或 `ogl`,你需要根据所使用的效果,手动安装相应的依赖包。 主题通过 **按需加载** 的方式动态加载这些效果, 因此不用担心最终打包后的文档体积过大。 ::: ### tint-plate #### 效果预览 ![tint-plate](/images/hero-effects/tint-plate.png) #### 使用方法 ```md {8} --- pageLayout: home home: true config: - type: hero full: true effect: tint-plate --- ``` #### 配置项 `effectConfig` 用于配置 RGB 值: - 配置为单个值时,表示配置 red,green,blue 三个颜色值为相同值,范围: 0 - 255。示例: `210`。 - 配置为三个值时,表示配置 red,green,blue 三个颜色值为不同值,范围: 0 - 255。示例: `210,210,210`。 - 配置为 `TintPlate`,则可以更加灵活的控制每个颜色值和对应的偏移量。 - 还可以配置为 `{ light: TintPlate, dark: TintPlate }`,在深色模式和浅色模式下使用不同的颜色值。 ```ts interface TintPlate { r: { value: number, offset: number } // value 表示色值,offset 表示偏移量 g: { value: number, offset: number } b: { value: number, offset: number } } ``` **示例**: ::: code-tabs @tab 单个值 ```md {8,9} --- pageLayout: home home: true config: - type: hero full: true effect: tint-plate effectConfig: 210 --- ``` @tab 三个值 ```md {8,9} --- pageLayout: home home: true config: - type: hero full: true effect: tint-plate effectConfig: 210,210,210 --- ``` @tab TintPlate ```md {8-18} --- pageLayout: home home: true config: - type: hero full: true effect: tint-plate effectConfig: r: value: 210 offset: 0 g: value: 210 offset: 0 b: value: 210 offset: 0 --- ``` ::: ::: info 为了便于用户配置 美观的个性化的背景,主题还提供了 [首页背景色板配置工具](../../tools/home-hero-tint-plate.md) 进行可视化操作,生成配置内容,你可以直接复制它们用于自己的项目中。 ::: ### prism #### 效果预览 ![prism](/images/hero-effects/prism.png) #### 安装依赖 :::npm-to ```sh npm i ogl ``` ::: #### 使用方法 ```md {8} --- pageLayout: home home: true config: - type: hero full: true effect: prism --- ``` #### 配置项 :::: field-group :::field name="height" type="number" optional default="3.5" 棱柱的顶点高度(world units) ::: :::field name="baseWidth" type="number" optional default="5.5" X/Z轴总基准宽度(world units) ::: :::field name="animationType" type="'rotate' | 'hover' | '3drotate'" optional default="'rotate'" 动画模式:着色器摆动、指针悬停倾斜或完全三维旋转。 ::: :::field name="glow" type="number" optional default="1" 发光/溢出强度乘数。 ::: :::field name="offset" type="{ x?: number, y?: number }" optional default="{ x: 0, y: 0 }" 画布内的像素偏移(x → 向右,y → 向下)。 ::: :::field name="noise" type="number" optional default="0" 最终颜色中添加的颗粒噪声量(0表示禁用)。 ::: :::field name="transparent" type="boolean" optional default="true" 画布是否具有Alpha通道(透明背景)。 ::: :::field name="scale" type="number" optional default="3.6" 棱镜的整体屏幕空间比例(数值越大,显示尺寸越大)。 ::: :::field name="hueShift" type="number" optional default="0" 色调旋转(弧度)应用于最终颜色。 ::: :::field name="colorFrequency" type="number" optional default="1" 控制颜色变化的内部正弦带频率。 ::: :::field name="hoverStrength" type="number" optional default="2" 悬停倾斜(俯仰/偏航幅度)灵敏度。 ::: :::field name="inertia" type="number" optional default="0.05" 悬停缓动因子(`0 ~ 1`,数值越大响应越灵敏)。 ::: :::field name="bloom" type="number" optional default="1" 在光泽之上叠加额外的绽放效果层次。 ::: :::field name="suspendWhenOffscreen" type="boolean" optional default="true" 当元素不在视口内时暂停渲染。 ::: :::field name="timeScale" type="number" optional default="0.5" 动画全局时间倍率(0=冻结,1=正常)。 ::: :::: **示例**: ```md {8-26} --- pageLayout: home home: true config: - type: hero full: true effect: prism effectConfig: height: 3.5, baseWidth: 5.5 animationType: rotate glow: 1 offset: x: 0 y: 0 noise: 0 transparent: true scale: 3.6 hueShift: 0 colorFrequency: 1 hoverStrength: 2 inertia: 0.05 bloom: 1 suspendWhenOffscreen: true timeScale: 0.5 --- ``` ### pixel-blast #### 效果预览 ![pixel-blast](/images/hero-effects/pixel-blast.png) #### 安装依赖 :::npm-to ```sh npm i three postprocessing ``` ::: #### 使用方法 ```md {8} --- pageLayout: home home: true config: - type: hero full: true effect: pixel-blast --- ``` #### 配置项 ::::field-group :::field name="variant" type="'square' | 'circle' | 'triangle' | 'diamond'" optional default="'square'" 像素形状变体 ::: :::field name="pixelSize" type="number" optional default="4" 基础像素尺寸(根据DPI自动缩放)。 ::: :::field name="color" type="string" optional default="'#5086a1'" 像素颜色 ::: :::field name="antialias" type="boolean" optional default="true" 是否启用抗锯齿 ::: :::field name="patternScale" type="number" optional default="2" 噪声/图案比例 ::: :::field name="patternDensity" type="number" optional default="1" 调整图案密度 ::: :::field name="liquid" type="boolean" optional default="false" 是否启用液体扭曲效果。 ::: :::field name="liquidStrength" type="number" optional default="0.1" 液体扭曲强度 ::: :::field name="liquidRadius" type="number" optional default="1" 液体触摸笔刷半径比例。 ::: :::field name="liquidWobbleSpeed" type="number" optional default="4.5" 液体晃动频率 ::: :::field name="pixelSizeJitter" type="number" optional default="0" 应用于覆盖范围的随机抖动 ::: :::field name="enableRipples" type="boolean" optional default="true" 启用点击涟漪效果 ::: :::field name="rippleIntensityScale" type="number" optional default="1" 纹波强度乘数 ::: :::field name="rippleThickness" type="number" optional default="0.1" 纹波环厚度 ::: :::field name="rippleSpeed" type="number" optional default="0.3" 纹波传播速度 ::: :::field name="autoPauseOffscreen" type="boolean" optional default="true" 当元素不在视口内时自动暂停渲染 ::: :::field name="speed" type="number" optional default="0.5" 动画时间缩放比例 ::: :::field name="transparent" type="boolean" optional default="true" 透明背景 ::: :::field name="edgeFade" type="number" optional default="0.5" 边缘淡入距离(`0-1`)。 ::: :::field name="noiseAmount" type="number" optional default="0" 噪声强度 ::: :::field name="className" type="string" optional 容器自定义类名 ::: :::field name="style" type="CSSProperties" optional 容器自定义样式 ::: :::field name="backgroundImage" type="string" optional 背景图像 URL ::: :::: **示例**: ```md {8-29} --- pageLayout: home home: true config: - type: hero full: true effect: pixel-blast effectConfig: variant: square pixelSize: 4 color: #5086a1 antialias: true patternScale: 2 patternDensity: 1 liquid: false liquidStrength: 0.1 liquidRadius: 1 pixelSizeJitter: 0 enableRipples: true rippleIntensityScale: 1 rippleThickness: 0.1 rippleSpeed: 0.3 liquidWobbleSpeed: 4.5 autoPauseOffscreen: true speed: 0.5 transparent: true edgeFade: 0.5 noiseAmount: 0 --- ``` ### hyper-speed #### 效果预览 ![hyper-speed](/images/hero-effects/hyper-speed.png) #### 安装依赖 :::npm-to ```sh npm i three postprocessing ``` ::: #### 使用方法 ```md {8} --- pageLayout: home home: true config: - type: hero full: true effect: hyper-speed --- ``` #### 配置项 ```ts interface ThemeHomeHeroHyperSpeedDistortion { uniforms: Record getDistortion: string } interface ThemeHomeHeroHyperSpeedColors { roadColor: number islandColor: number background: number shoulderLines: number brokenLines: number leftCars: number[] rightCars: number[] sticks: number } interface ThemeHomeHeroHyperSpeed { distortion?: string | ThemeHomeHeroHyperSpeedDistortion length: number roadWidth: number islandWidth: number lanesPerRoad: number fov: number fovSpeedUp: number speedUp: number carLightsFade: number totalSideLightSticks: number lightPairsPerRoadWay: number shoulderLinesWidthPercentage: number brokenLinesWidthPercentage: number brokenLinesLengthPercentage: number lightStickWidth: [number, number] lightStickHeight: [number, number] movingAwaySpeed: [number, number] movingCloserSpeed: [number, number] carLightsLength: [number, number] carLightsRadius: [number, number] carWidthPercentage: [number, number] carShiftX: [number, number] carFloorSeparation: [number, number] colors: ThemeHomeHeroHyperSpeedColors isHyper?: boolean } ``` :::warning [vue-bits](https://vue-bits.dev/backgrounds/hyperspeed) 未提供详细配置项说明,请谨慎使用。 ::: 可以使用以下预设配置,直接复制到你的 markdown 文件中: :::code-tabs @tab Cyberpunk ```md --- pageLayout: home home: true config: - type: hero full: true effect: hyper-speed effectConfig: distortion: turbulentDistortion length: 400 roadWidth: 10 islandWidth: 2 lanesPerRoad: 3 fov: 90 fovSpeedUp: 150 speedUp: 2 carLightsFade: 0.4 totalSideLightSticks: 20 lightPairsPerRoadWay: 40 shoulderLinesWidthPercentage: 0.05 brokenLinesWidthPercentage: 0.1 brokenLinesLengthPercentage: 0.5 lightStickWidth: [0.12, 0.5] lightStickHeight: [1.3, 1.7] movingAwaySpeed: [60, 80] movingCloserSpeed: [-120, -160] carLightsLength: [12, 80] carLightsRadius: [0.05, 0.14] carWidthPercentage: [0.3, 0.5] carShiftX: [-0.8, 0.8] carFloorSeparation: [0, 5] colors: roadColor: 0x080808 islandColor: 0x0a0a0a background: 0x000000 shoulderLines: 0x131318 brokenLines: 0x131318 leftCars: [0xd856bf, 0x6750a2, 0xc247ac] rightCars: [0x03b3c3, 0x0e5ea5, 0x324555] sticks: 0x03b3c3 --- ``` @tab Akira ```md --- pageLayout: home home: true config: - type: hero full: true effect: hyper-speed effectConfig: distortion: mountainDistortion length: 400 roadWidth: 9 islandWidth: 2 lanesPerRoad: 3 fov: 90 fovSpeedUp: 150 speedUp: 2 carLightsFade: 0.4 totalSideLightSticks: 50 lightPairsPerRoadWay: 50 shoulderLinesWidthPercentage: 0.05 brokenLinesWidthPercentage: 0.1 brokenLinesLengthPercentage: 0.5 lightStickWidth: [0.12, 0.5] lightStickHeight: [1.3, 1.7] movingAwaySpeed: [60, 80] movingCloserSpeed: [-120, -160] carLightsLength: [20, 60] carLightsRadius: [0.05, 0.14] carWidthPercentage: [0.3, 0.5] carShiftX: [-0.2, 0.2] carFloorSeparation: [0.05, 1] colors: roadColor: 0x080808 islandColor: 0x0a0a0a background: 0x000000 shoulderLines: 0x131318 brokenLines: 0x131318 leftCars: [0xff102a, 0xeb383e, 0xff102a] rightCars: [0xdadafa, 0xbebae3, 0x8f97e4] sticks: 0xdadafa --- ``` @tab Golden ```md --- pageLayout: home home: true config: - type: hero full: true effect: hyper-speed effectConfig: distortion: xyDistortion length: 400 roadWidth: 9 islandWidth: 2 lanesPerRoad: 3 fov: 90 fovSpeedUp: 150 speedUp: 3 carLightsFade: 0.4 totalSideLightSticks: 50 lightPairsPerRoadWay: 30 shoulderLinesWidthPercentage: 0.05 brokenLinesWidthPercentage: 0.1 brokenLinesLengthPercentage: 0.5 lightStickWidth: [0.02, 0.05] lightStickHeight: [0.3, 0.7] movingAwaySpeed: [20, 50] movingCloserSpeed: [-150, -230] carLightsLength: [20, 80] carLightsRadius: [0.03, 0.08] carWidthPercentage: [0.1, 0.5] carShiftX: [-0.5, 0.5] carFloorSeparation: [0, 0.1] colors: roadColor: 0x080808 islandColor: 0x0a0a0a background: 0x000000 shoulderLines: 0x131318 brokenLines: 0x131318, leftCars: [0x7d0d1b, 0xa90519, 0xff102a] rightCars: [0xf1eece, 0xe6e2b1, 0xdfd98a] sticks: 0xf1eece --- ``` @tab Split ```md --- pageLayout: home home: true config: - type: hero full: true effect: hyper-speed effectConfig: distortion: LongRaceDistortion length: 400 roadWidth: 10 islandWidth: 5 lanesPerRoad: 2 fov: 90 fovSpeedUp: 150 speedUp: 2 carLightsFade: 0.4 totalSideLightSticks: 50 lightPairsPerRoadWay: 70 shoulderLinesWidthPercentage: 0.05 brokenLinesWidthPercentage: 0.1 brokenLinesLengthPercentage: 0.5 lightStickWidth: [0.12, 0.5] lightStickHeight: [1.3, 1.7] movingAwaySpeed: [60, 80] movingCloserSpeed: [-120, -160] carLightsLength: [20, 60] carLightsRadius: [0.05, 0.14] carWidthPercentage: [0.3, 0.5] carShiftX: [-0.2, 0.2] carFloorSeparation: [0.05, 1] colors: roadColor: 0x080808 islandColor: 0x0a0a0a background: 0x000000 shoulderLines: 0x131318 brokenLines: 0x131318 leftCars: [0xff5f73, 0xe74d60, 0xff102a] rightCars: [0xa4e3e6, 0x80d1d4, 0x53c2c6] sticks: 0xa4e3e6 --- ``` @tab Highway ```md --- pageLayout: home home: true config: - type: hero full: true effect: hyper-speed effectConfig: distortion: turbulentDistortion length: 400 roadWidth: 9 islandWidth: 2 lanesPerRoad: 3 fov: 90 fovSpeedUp: 150 speedUp: 2 carLightsFade: 0.4 totalSideLightSticks: 50 lightPairsPerRoadWay: 50 shoulderLinesWidthPercentage: 0.05 brokenLinesWidthPercentage: 0.1 brokenLinesLengthPercentage: 0.5 lightStickWidth: [0.12, 0.5] lightStickHeight: [1.3, 1.7] movingAwaySpeed: [60, 80] movingCloserSpeed: [-120, -160] carLightsLength: [20, 60] carLightsRadius: [0.05, 0.14] carWidthPercentage: [0.3, 0.5] carShiftX: [-0.2, 0.2] carFloorSeparation: [0.05, 1] colors: roadColor: 0x080808 islandColor: 0x0a0a0a background: 0x000000 shoulderLines: 0x131318 brokenLines: 0x131318 leftCars: [0xdc5b20, 0xdca320, 0xdc2020] rightCars: [0x334bf7, 0xe5e6ed, 0xbfc6f3] sticks: 0xc5e8eb --- ``` @tab Deep ```md --- pageLayout: home home: true config: - type: hero full: true effect: hyper-speed effectConfig: distortion: deepDistortion length: 400 roadWidth: 18 islandWidth: 2 lanesPerRoad: 3 fov: 90 fovSpeedUp: 150 speedUp: 2 carLightsFade: 0.4 totalSideLightSticks: 50 lightPairsPerRoadWay: 50 shoulderLinesWidthPercentage: 0.05 brokenLinesWidthPercentage: 0.1 brokenLinesLengthPercentage: 0.5 lightStickWidth: [0.12, 0.5] lightStickHeight: [1.3, 1.7] movingAwaySpeed: [60, 80] movingCloserSpeed: [-120, -160] carLightsLength: [20, 60] carLightsRadius: [0.05, 0.14] carWidthPercentage: [0.3, 0.5] carShiftX: [-0.2, 0.2] carFloorSeparation: [0.05, 1] colors: roadColor: 0x080808 islandColor: 0x0a0a0a background: 0x000000 shoulderLines: 0x131318 brokenLines: 0x131318 leftCars: [0xff322f, 0xa33010, 0xa81508] rightCars: [0xfdfdf0, 0xf3dea0, 0xe2bb88] sticks: 0xfdfdf0 --- ``` ::: ### liquid-ether #### 效果预览 ![liquid-ether](/images/hero-effects/liquid-ether.png) #### 安装依赖 :::npm-to ```sh npm i three ``` ::: #### 使用方法 ```md {8} --- pageLayout: home home: true config: - type: hero full: true effect: liquid-ether --- ``` #### 配置项 ::::field-group :::field name="mouseForce" type="number" optional default="20" 鼠标/触摸移动注入速度时的强度系数。 ::: :::field name="cursorSize" type="number" optional default="100" 光标半径(以基本分辨率的像素为单位)。 ::: :::field name="isViscous" type="boolean" optional default="false" 启用迭代性质量解决方案(更平滑,更粗糙的运动)。 ::: :::field name="viscous" type="number" optional default="30" 当 `isViscous` 为 `true` 时使用的粘性系数。 ::: :::field name="iterationsViscous" type="number" optional default="32" 粘性的高斯-塞德尔迭代次数(值越大 = 更平滑,更慢)。 ::: :::field name="iterationsPoisson" type="number" optional default="32" 用于确保不可压缩性的压力泊松迭代次数。 ::: :::field name="dt" type="number" optional default="0.014" 内部的对流/扩散迭代中使用固定的模拟时间步长。 ::: :::field name="BFECC" type="boolean" optional default="true" 启用 BFECC 传输(错误补偿)以获得更清晰的流动,禁用以获得稍微的性能提升。 ::: :::field name="resolution" type="number" optional default="0.5" 相对于画布大小的仿真纹理缩放(值越小,更好的性能、更模糊)。 ::: :::field name="isBounce" type="boolean" optional default="false" 如果为 true,显示弹跳边界(速度在边缘上限)。 ::: :::field name="colors" type="string[]" optional default="['#5227FF', '#FF9FFC', '#B19EEF']" 用于构建速度-颜色映射调色板的十六进制颜色停止点数组。 ::: :::field name="autoDemo" type="boolean" optional default="true" 启用无用户交互时的自动驾驶指针。 ::: :::field name="autoSpeed" type="number" optional default="0.5" 自动指针运动的速度(标准化单位/秒)。 ::: :::field name="autoIntensity" type="number" optional default="2.2" 在自动模式下应用于速度增量的乘数。 ::: :::field name="takeoverDuration" type="number" optional default="2.5" 在用户移动鼠标时从自动指针插值到实际光标的秒数。 ::: :::field name="autoResumeDelay" type="number" optional default="1000" 在自动模式恢复之前的不活动时间(毫秒)。 ::: :::field name="autoRampDuration" type="number" optional default="0.6" 在激活后从 0 开始加速自动移动速度的秒数。 ::: :::field name="className" type="string" optional 应用于容器上的 CSS 类名。 ::: :::field name="style" type="CSSProperties" optional 应用于容器上的 CSS 样式。 ::: :::: **示例**: ```md --- pageLayout: home home: true config: - type: hero full: true effect: liquid-ether effectConfig: mouseForce: 20 cursorSize: 100 isViscous: false viscous: 30 iterationsViscous: 32 iterationsPoisson: 32 dt: 0.014 BFECC: true resolution: 0.5 isBounce: false colors: [#5227FF, #FF9FFC, #B19EEF] autoDemo: true autoSpeed: 0.5 autoIntensity: 2.2 takeoverDuration: 0.25 autoResumeDelay: 1000 autoRampDuration: 0.6 --- ``` ### dot-grid #### 效果预览 ![dot-grid](/images/hero-effects/dot-grid.png) #### 安装依赖 :::npm-to ```sh npm i three gsap ``` ::: #### 使用方法 ```md {8} --- pageLayout: home home: true config: - type: hero full: true effect: dot-grid --- ``` #### 配置项 ::::field-group :::field name="dotSize" type="number" optional default="5" 每个点的尺寸(像素)。 ::: :::field name="gap" type="number" optional default="15" 每个点之间的间隙(像素)。 ::: :::field name="baseColor" type="string" optional default="'#ebebf5'" 点的基本颜色。 ::: :::field name="activeColor" type="string" optional default="'#8cccd5'" 鼠标悬停或激活时点的颜色。 ::: :::field name="proximity" type="number" optional default="120" 鼠标指针周围的半径,在此范围内点会响应 ::: :::field name="speedTrigger" type="number" optional default="100" 触发惯性效果的鼠标速度阈值。 ::: :::field name="shockRadius" type="number" optional default="250" 点击时的震动波半径。 ::: :::field name="shockStrength" type="number" optional default="5" 点击时震动波的强度。 ::: :::field name="maxSpeed" type="number" optional default="5000" 惯性计算的最大速度。 ::: :::field name="resistance" type="number" optional default="750" 惯性效果的阻力 ::: :::field name="returnDuration" type="number" optional default="1.5" 惯性后点返回原始位置的持续时间。 ::: :::field name="className" type="string" optional 应用于容器上的 CSS 类名。 ::: :::field name="style" type="CSSProperties" optional 应用于容器上的 CSS 样式。 ::: :::: **示例**: ```md --- pageLayout: home home: true config: - type: hero full: true effect: dot-grid effectConfig: dotSize: 5 gap: 15 baseColor: #ebebf5 activeColor: #8cccd5 proximity: 120 speedTrigger: 100 shockRadius: 250 shockStrength: 5 maxSpeed: 5000 resistance: 750 returnDuration: 1.5 --- ``` ### iridescence #### 效果预览 ![iridescence](/images/hero-effects/iridescence.png) #### 安装依赖 :::npm-to ```sh npm i ogl ``` ::: #### 使用方法 ```md {8} --- pageLayout: home home: true config: - type: hero full: true effect: iridescence --- ``` #### 配置项 ::::field-group :::field name="color" type="readonly [number, number, number]" optional default="[1, 1, 1]" 基准色以 RGB 值数组形式表示(每个数值范围在 `0` 到 `1` 之间)。 ::: :::field name="speed" type="number" optional default="1" 动画的速度乘数 ::: :::field name="amplitude" type="number" optional default="0.1" 鼠标驱动效果的振幅。 ::: :::field name="mouseReact" type="boolean" optional default="true" 启用或禁用鼠标与着色器的交互 ::: :::: **示例**: ```md {8} --- pageLayout: home home: true config: - type: hero full: true effect: iridescence effectConfig: color: [1, 1, 1] speed: 1.0 amplitude: 0.1 mouseReact: true --- ``` ### orb #### 效果预览 ![orb](/images/hero-effects/orb.png) #### 安装依赖 :::npm-to ```sh npm i ogl ``` ::: #### 使用方法 ```md {8} --- pageLayout: home home: true config: - type: hero full: true effect: orb --- ``` #### 配置项 ::::field-group :::field name="hue" type="number" optional default="0" 球的基本色调(度)。 ::: :::field name="hoverIntensity" type="number" optional default="0.2" 控制悬停扭曲效果的强度。 ::: :::field name="rotateOnHover" type="boolean" optional default="true" 启用或禁用悬停时的持续旋转。 ::: :::field name="forceHoverState" type="boolean" optional default="false" 即使没有悬停,也强制启用悬停动画。 ::: :::field name="className" type="string" optional 应用于容器上的 CSS 类名。 ::: :::: **示例**: ```md {8} --- pageLayout: home home: true config: - type: hero full: true effect: orb effectConfig: hue: 0 hoverIntensity: 0.2 rotateOnHover: true forceHoverState: false --- ``` ### beams #### 效果预览 ![beams](/images/hero-effects/beams.png) #### 安装依赖 :::npm-to ```sh npm i three ``` ::: #### 使用方法 ```md {8} --- pageLayout: home home: true config: - type: hero full: true effect: beams --- ``` #### 配置项 ::::field-group :::field name="beamWidth" type="number" optional default="2" 每个激光束的宽度。 ::: :::field name="beamHeight" type="number" optional default="15" 每个激光束的高度。 ::: :::field name="beamNumber" type="number" optional default="12" 要显示的激光束数量。 ::: :::field name="lightColor" type="string" optional default="#fff" 方向光的颜色。 ::: :::field name="speed" type="number" optional default="2" 动画的速度。 ::: :::field name="noiseIntensity" type="number" optional default="1.75" 噪音效果的强度。 ::: :::field name="scale" type="number" optional default="0.2" 噪音模式的缩放比例。 ::: :::field name="rotation" type="number" optional default="0" 整个激光束系统的旋转角度(度)。 ::: :::: **示例**: ```md --- pageLayout: home home: true config: - type: hero full: true effect: beams effectConfig: beamWidth: 2 beamHeight: 15 beamNumber: 12 lightColor: #fff speed: 2 noiseIntensity: 1.75 scale: 0.2 rotation: 0 --- ``` ### lightning #### 效果预览 ![lightning](/images/hero-effects/lightning.png) #### 使用方法 ```md {8} --- pageLayout: home home: true config: - type: hero full: true effect: lightning --- ``` #### 配置项 ::::field-group :::field name="hue" type="number" optional default="255" 光束的色调(度)(0到360)。 ::: :::field name="xOffset" type="number" optional default="0" 光束的水平偏移量(标准化单位)。 ::: :::field name="speed" type="number" optional default="1" 光束的动画速度乘数。 ::: :::field name="intensity" type="number" optional default="1" 光束的亮度乘数。 ::: :::field name="size" type="number" optional default="1" 光束的缩放因子。 ::: :::: **示例**: ```md {8} --- pageLayout: home home: true config: - type: hero full: true effect: lightning effectConfig: hue: 255 xOffset: 0 speed: 1 intensity: 1 size: 1 --- ``` ### dark-veil #### 效果预览 ![dark-veil](/images/hero-effects/dark-veil.png) #### 使用方法 ```md {8} --- pageLayout: home home: true config: - type: hero full: true effect: dark-veil --- ``` #### 配置项 ::::field-group :::field name="hueShift" type="number" optional default="0" 调整整个动画的色调。 ::: :::field name="noiseIntensity" type="number" optional default="0" 噪声/颗粒效果的强度。 ::: :::field name="scanlineIntensity" type="number" optional default="0" 扫描线效果的强度。 ::: :::field name="speed" type="number" optional default="0.5" 动画速度。 ::: :::field name="scanlineFrequency" type="number" optional default="0" 扫描线的频率。 ::: :::field name="warpAmount" type="number" optional default="0" 应用于效果的扭曲变形量。 ::: :::field name="resolutionScale" type="number" optional default="1" 分辨率缩放比例。 ::: :::: **示例**: ```md --- pageLayout: home home: true config: - type: hero full: true effect: dark-veil effectConfig: hueShift: 0 noiseIntensity: 0 scanlineIntensity: 0 speed: 0.5 scanlineFrequency: 0 warpAmount: 0 resolutionScale: 1 --- ```