组件/BaseSurface 基础表面层

BaseSurface 基础表面层

可切换材质并在运动中降级的背景层

已验证自 0.3.4

用法

模式

mode 选择材质:pure 纯色、mask 半透明遮罩、blur 背景模糊、glass 玻璃、refraction 折射。

示例加载中...

参数实验

filter* 调滤镜层,refraction* 调折射层,preset="card" 套用卡片调校。

示例加载中...

伪元素模式

fake 用伪元素绘制背景,与现有 .fake-background 层级一致,插槽内容自然位于其上。

示例加载中...

运动降级

transform 运动会让 backdrop-filter 失效;设置 moving 后降级为 fallbackMode,停止后平滑恢复。

示例加载中...

与原生对比

拿不到运动状态时开启 autoDetect,由组件监听 transform 过渡自行降级。

示例加载中...

最佳实践

  • 业务容器优先用 TxCard,它负责容器语义与交互;只在直接调材质、降级或折射参数时用 TxBaseSurface。
  • 父层持有动画状态时传 moving;拿不到状态的 transform 过渡才用 autoDetect。
  • blur / glass 运动中保持 fallbackMode="mask" 以保证可读;能接受纯色时才用 pure。
  • 折射优先调 refractionStrength、refractionProfile、refractionTone;RGB 通道偏移只用于视觉实验。
  • refractionRenderer="css" 光学保真度较低,只在页面能接受时使用。

API 参考

属性

属性名类型默认值说明
mode'pure' | 'mask' | 'blur' | 'glass' | 'refraction''pure'背景模式:纯色、遮罩、滤镜、玻璃或折射。
radiusstring | number-圆角;不传时继承父元素。
colorstring-纯色或遮罩的底色。
opacitynumber0.75mask 模式的透明度(0–1)。
fallbackMaskOpacitynumber-降级为 mask 时的透明度(0–1)。
blurnumber10滤镜层模糊半径(px)。
filterSaturationnumber1.5滤镜层饱和度。
filterContrastnumber1滤镜层对比度。
filterBrightnessnumber1滤镜层亮度。
saturationnumber1.8glass / refraction 玻璃层的饱和度。
brightnessnumber70glass / refraction 玻璃层的亮度;<= 3 时视为倍率。
backgroundOpacitynumber0玻璃层的背景透明度。
borderWidthnumber0.07玻璃层的边缘宽度系数。
displacenumber0.5折射位移强度。
distortionScalenumber-180折射扭曲缩放。
redOffset / greenOffset / blueOffsetnumber0 / 10 / 20RGB 通道偏移,控制色散。
xChannel / yChannel'R' | 'G' | 'B''R' / 'G'折射位移的取样通道。
mixBlendModestring'difference'折射混合模式。
refractionStrengthnumber62折射强度(0–100)。
refractionProfile'soft' | 'filmic' | 'cinematic''filmic'折射风格预设。
refractionTone'mist' | 'balanced' | 'vivid''balanced'折射色调:vivid 更通透,mist 更柔和。
refractionAnglenumber-24色散主方向(度)。
refractionLightX / refractionLightYnumber-光源锚点(0–1)。
refractionHaloOpacitynumber-光晕透明度(0–1);不传时按内置 filmic 模型。
overlayOpacitynumber0非 mask 模式额外叠加的遮罩透明度。
preset'default' | 'card''default'视觉预设;card 为卡片调校。
refractionRenderer'svg' | 'css''svg'折射渲染器。
movingbooleanfalse标记正在运动,触发降级。
fallbackMode'pure' | 'mask''mask'运动中的降级模式。
settleDelaynumber150运动结束后开始恢复的延迟(ms),不短于 transitionDuration。
autoDetectbooleanfalse自动检测 transform 运动并降级。
transitionDurationnumber299恢复过渡时长(ms)。
fakebooleanfalse用伪元素渲染背景。
fakeIndexnumber0伪元素层的 z-index。
tagstring'div'根元素标签。

插槽

插槽名参数说明
default-表面内容,渲染在 .tx-base-surface__content 中,位于所有材质层之上。

CSS 变量

变量名来源说明
--tx-surface-colorcolor prop 或主题兜底纯色 / 遮罩底色,默认 var(--tx-fill-color-lighter, #fafafa)。
--tx-surface-radiusradius prop根节点与各层圆角;数字转为 px。
--tx-surface-transitiontransitionDuration prop层淡入淡出、背景与 backdrop-filter 的过渡时长。
--tx-surface-filter-blurblur prop滤镜层与折射滤镜层的模糊半径。
--tx-surface-filter-saturationfilterSaturation prop滤镜层饱和度倍率。
--tx-surface-filter-contrastfilterContrast prop滤镜层对比度倍率。
--tx-surface-filter-brightnessfilterBrightness prop滤镜层亮度倍率。
--tx-surface-mask-opacityopacity、fallbackMaskOpacity 或 overlayOpacity当前遮罩透明度,限制在 0..1。
--tx-surface-refraction-light-x / --tx-surface-refraction-light-yrefractionLightX / refractionLightY 或角度模型折射光源锚点(百分比)。
--tx-surface-refraction-strengthrefractionStrength 模型静止、运动与恢复中混合后的光学强度。
--tx-surface-fake-indexfakeIndex prop伪元素层的 z-index。
--tx-surface-fake-bgcolor prop 或主题兜底伪元素的背景色。
--tx-surface-fake-opacitymask 透明度模型伪元素的透明度。
--tx-surface-mask-opacity-percentmask 透明度模型遮罩透明度的百分比形式(内部,勿覆写)。
--tx-surface-motion-cover-opacity运动状态模型折射运动罩的透明度(内部)。
--tx-surface-refraction-edge-opacity光学模型折射边缘高光的透明度(内部)。
--tx-surface-refraction-streak-anglerefractionAngle 模型折射拉丝角度,等于角度 +92deg(内部)。
--tx-surface-refraction-{filter,mask}-{base,primary,secondary,veil}-weight / --tx-surface-refraction-streak-weightprofile/tone 权重模型各光学层的混合权重(内部)。
--tx-surface-refraction-*-gain / -boost / -base、--tx-surface-refraction-halo-opacity、--tx-surface-refraction-mask-effective-opacityprofile/tone 派生量光学插值的派生输出(内部)。
--tx-surface-refraction-mask-color主题钩子(消费)折射渐变层的基色,可在主题中覆写,默认 #fff 系。

概述

  • pure 只渲染根背景;mask 渲染遮罩层,透明度限制在 0..1。
  • blur、glass 在 moving 或检测到 transform 运动时降级:fallbackMode="mask" 优先用 fallbackMaskOpacity,pure 不渲染遮罩层。
  • refraction 运动中不切换模式:失去采样的 glass / blur 层各自淡出,由半透明运动罩接住,停止后交叉淡回。
  • 显式传入 refractionStrength、refractionAngle、refractionProfile 任一项即启用派生折射模型,未传的项按 62 / -24 / 'filmic' 兜底。
  • autoDetect 监听根节点及祖先的 style 变化与 transitionstart / transitionend / transitioncancel,卸载时移除。

技术实现

  • glass 与 refraction 由 TxGlassSurface 渲染,降级时序在 base-surface-motion.ts。
  • 源码:packages/tuffex/packages/components/src/base-surface/。
查看源码
packages/tuffex/packages/components/src/base-surface/index.ts