Skip to content

Watermark 水印

xy-watermark 用来给任意容器叠加重复的文字或图片水印。它适合试用环境标记、内部资料防扩散、运营后台品牌露出和导出预览面板。

推荐阅读路径

如果你是第一次接入 xy-watermark,建议按下面这条顺序往下看:

  1. 先看基础用法,确认水印如何包裹现有业务容器。
  2. 再看多行文本,判断是否需要把环境、团队或业务标识拆成两行表达。
  3. 接着看图片水印,确认品牌图形或 Logo 是否更适合当前场景。
  4. 然后看控制参数,决定是否需要运行时开关、透明度和自动恢复。
  5. 再看渲染事件,确认是否要把水印生成状态接进导出、截图或调试流程。
  6. 最后看全屏与目标容器模式,把水印挂到外部宿主或整个页面。

基础用法

最常见的接法是把一块现有内容区域包在 xy-watermark 里,不需要额外改动里面的布局结构。

Preview

灰度环境工作台

直接把原有内容区包起来,就可以在不打断交互的前提下叠加环境标记和资料归属信息。

多行文本

当你需要同时表达“系统名 + 环境名”或“团队名 + 保密标记”时,可以把 content 传成字符串数组。

内部评审稿

多行模式适合把系统名、环境名和保密级别拆开表达,降低单行文字过长时的拥挤感。

图片水印

image 的优先级高于文本,适合品牌图形、徽标或固定视觉标识。为了避免拉伸,建议显式传入 widthheight,并使用 2x 或 3x 资源。

品牌物料预览

图片水印适合统一品牌标识。这里用内联 SVG 模拟一张 2x Logo 水印图。

自定义参数

通过 font / gap / offset / rotate / z-index 可以快速预览不同水印密度和视觉强度,适合灰度环境、试用环境和内部资料页。

Trial

自定义水印参数面板

适合在灰度环境、内部演示环境或试用环境里快速确认水印密度、角度和字体强度。

控制参数

disabled / opacity / repeat / auto-observe 适合在调试、导出预览或灰度环境里动态调整水印策略。

Control

控制型参数

适合在调试、导出预览和灰度环境里快速开关水印、调整透明度,或验证自动恢复能力是否符合预期。

启用
自动恢复

渲染事件与 Expose

renderedimage-error 和实例方法适合接入截图、导出、联调面板或运行时诊断。

Events

渲染回调与 expose

适合在截图、导出或运行时调试里记录当前水印来源,并在图片失败时回退到文本模式。

rendered:未触发 image-error:0dataUrl:尚未生成

全屏与目标容器

target 可以把水印挂到外部容器,fullscreen 则会直接覆盖 document.body。两者同时存在时优先使用 fullscreen

Target 模式

组件声明在左侧,但水印实际会挂到右侧目标容器。slot 只负责说明,不决定宿主。

External Host

右侧是实际水印宿主

适合对接外部面板、预览区或业务容器,而不必改动组件声明所在的位置。

开启全屏水印
仅示例区域

全屏模式会把水印层直接挂到 `document.body`,适合试用环境、演示环境和页面级品牌标记。

API

Watermark Attributes

未显式传入 width / height 时,文本模式会按内容自动测量,图片模式会回落到 120 / 64

属性说明类型默认值
width水印宽度number文本模式按内容测量,图片模式为 120
height水印高度number文本模式按内容测量,图片模式为 64
rotate绘制时的旋转角度,单位为 °number-22
z-index水印层层级number9
image图片水印地址,优先级高于 contentstring
content文字水印内容,支持单行或多行string | string[]'Xiaoye Components'
font文字样式配置WatermarkFont见下表
gap水印之间的水平和垂直间距[number, number][100, 100]
offset水印距离容器左上角的偏移量,默认取 gap / 2[number, number][gap[0] / 2, gap[1] / 2]
disabled是否禁用水印渲染booleanfalse
opacity水印层透明度,内部会限制在 0 ~ 1number1
repeat背景重复策略WatermarkRepeat'repeat'
auto-observe是否启用 DOM 观察器做自恢复booleantrue
fullscreen是否把水印直接挂到 document.bodybooleanfalse
target指定外部宿主容器,支持选择器或 HTMLElementWatermarkProps["target"]undefined

WatermarkFont

fontSize 建议优先使用数字或 px 字符串;内部数值计算会按 parseFloat 处理。

属性说明类型默认值
color字体颜色string'rgba(0,0,0,.15)'
fontSize字号number | string16
fontWeight字重WatermarkFontWeight'normal'
fontFamily字体族string'sans-serif'
fontGap多行文字的行间距number3
fontStyle字体样式WatermarkFontStyle'normal'
textAlign文本对齐方式WatermarkTextAlign'center'
textBaseline文本基线WatermarkTextBaseline'hanging'

Watermark Slots

插槽说明
default需要叠加水印的内容容器

事件

事件说明参数
rendered每次成功生成并挂载水印后触发WatermarkRenderPayload
image-error图片水印加载失败时触发WatermarkImageErrorHandler

Exposes

暴露项说明类型
rerender手动重新生成当前水印WatermarkInstance["rerender"]
getDataUrl获取最近一次成功生成的 base64 数据WatermarkInstance["getDataUrl"]
getTarget获取当前实际水印宿主元素WatermarkInstance["getTarget"]
removeWatermark手动移除当前水印层,适合验证 auto-observe 的恢复行为WatermarkInstance["removeWatermark"]

行为约定

  • target 模式下,slot 只是普通内容容器;真正挂载水印的宿主由 target 指定。
  • fullscreentarget 同时存在时,优先使用 fullscreen,水印会直接挂到 document.body
  • auto-observe=false 时,组件不会在水印层被手动删除或篡改后自动恢复。
  • 图片模式加载失败时会先触发 image-error,再根据 content 是否存在决定回退文本还是清空水印。