当前位置:首页 > 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中实现模态框,可以通过组件化的方式构建。模态框通常包含遮罩层、内容区域以及关闭按钮。 <template> <div class="modal"…

css制作水印

css制作水印

使用CSS制作水印 通过CSS可以轻松为网页或图片添加水印效果,以下是几种常见方法: 使用伪元素添加文字水印 通过::after或::before伪元素在目标元素上叠加半透明文字: .waterm…

php实现水印

php实现水印

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

php实现图片水印

php实现图片水印

添加文字水印 使用 imagettftext 函数在图片上添加文字水印。需要确保服务器安装了 GD 库和 FreeType 支持。 $image = imagecreatefromjpeg('ori…

js模态框实现

js模态框实现

使用原生JavaScript实现模态框 创建一个基本的模态框需要HTML结构、CSS样式和JavaScript交互逻辑。以下是一个简单实现方式: HTML部分: <button id="mo…

js 实现 模态窗口

js 实现 模态窗口

使用原生JavaScript实现模态窗口 创建HTML结构,包含触发按钮和模态框内容 <button id="modalBtn">打开模态窗口</button> <di…