当前位置:首页 > React

react模态框如何加水印

2026-01-25 02:44:44React

添加水印的基本方法

在React模态框中添加水印可以通过CSS背景或Canvas绘制实现。CSS方法简单高效,适合静态水印;Canvas则支持动态内容和复杂效果。

// CSS背景水印示例
.modal-watermark {
  position: relative;
}
.modal-watermark::after {
  content: "CONFIDENTIAL";
  position: absolute;
  opacity: 0.2;
  font-size: 40px;
  transform: rotate(-30deg);
  pointer-events: none;
}

使用Canvas动态生成

通过React的useEffect钩子和Canvas API可以创建动态水印,支持自定义文本、角度和透明度:

import { useEffect, useRef } from 'react';

function WatermarkCanvas({ text }) {
  const canvasRef = useRef(null);

  useEffect(() => {
    const canvas = canvasRef.current;
    const ctx = canvas.getContext('2d');
    ctx.font = '20px Arial';
    ctx.fillStyle = 'rgba(0, 0, 0, 0.1)';
    ctx.rotate(-0.3);
    ctx.fillText(text, 20, 70);
  }, [text]);

  return <canvas ref={canvasRef} className="watermark-canvas" />;
}

防止水印被移除

为确保水印难以被开发者工具删除,可采用DOM监控方案:

const observer = new MutationObserver((mutations) => {
  mutations.forEach(() => {
    const watermark = document.querySelector('.watermark');
    if (!watermark) {
      document.body.appendChild(createWatermark());
    }
  });
});
observer.observe(document.body, { childList: true });

第三方库方案

使用现成库如react-watermark可快速实现:

npm install react-watermark
import Watermark from 'react-watermark';

<Modal>
  <Watermark text="SAMPLE" opacity={0.1}>
    <div>模态内容</div>
  </Watermark>
</Modal>

响应式水印布局

结合ResizeObserver确保水印适应不同屏幕尺寸:

react模态框如何加水印

const resizeObserver = new ResizeObserver((entries) => {
  entries.forEach(entry => {
    const { width } = entry.contentRect;
    const fontSize = Math.max(16, width / 30);
    canvasRef.current.style.fontSize = `${fontSize}px`;
  });
});
resizeObserver.observe(containerRef.current);

标签: 水印模态
分享给朋友:

相关文章

vue实现列表水印

vue实现列表水印

实现列表水印的方法 在Vue中为列表添加水印可以通过多种方式实现,以下是几种常见的方法: 使用CSS背景图 通过CSS的background-image属性为列表元素添加水印背景。水印可以是文字或图…

vue实现水印效果

vue实现水印效果

实现水印效果的几种方法 在Vue中实现水印效果可以通过多种方式,以下是几种常见的方法: 使用CSS背景图 通过CSS的background-image属性可以实现简单的水印效果。定义一个包含水印文本…

vue怎么实现页面水印

vue怎么实现页面水印

实现页面水印的方法 在Vue中实现页面水印可以通过以下几种方式完成,根据需求选择合适的方法。 使用Canvas生成水印 通过Canvas绘制水印文本或图片,并将其作为背景插入到页面中。 // 在V…

react实现模态框

react实现模态框

使用 React 创建模态框 在 React 中实现模态框可以通过多种方式完成,以下是几种常见的方法。 使用 React 状态管理 通过 React 的 useState 钩子管理模态框的显示和隐藏…

css怎样制作水印

css怎样制作水印

使用伪元素添加水印 通过 ::after 或 ::before 伪元素在目标元素上叠加水印,适合局部区域水印: .watermark { position: relative; } .water…

php实现水印

php实现水印

添加水印的基本方法 使用 PHP 的 GD 库或 Imagick 扩展可以为图片添加水印。GD 库是 PHP 默认支持的图像处理库,而 Imagick 提供了更强大的功能。 使用 GD 库添加文字水…