当前位置:首页 > React

react实现盖章

2026-01-26 15:21:19React

React 实现盖章效果的方法

在 React 中实现盖章效果可以通过 CSS 动画、Canvas 绘制或 SVG 实现。以下是几种常见的方法:

使用 CSS 动画和伪元素

通过 CSS 关键帧动画模拟盖章动作,结合伪元素生成印章图形。

import React from 'react';
import './Stamp.css';

const Stamp = () => {
  return (
    <div className="stamp-container">
      <div className="stamp">批准</div>
    </div>
  );
};

export default Stamp;
/* Stamp.css */
.stamp-container {
  position: relative;
  width: 200px;
  height: 200px;
}

.stamp {
  position: absolute;
  width: 150px;
  height: 150px;
  border: 3px solid red;
  border-radius: 50%;
  display: flex;
  justify-content: center;
  align-items: center;
  font-size: 24px;
  color: red;
  transform: scale(0);
  animation: stamp 0.5s ease-out forwards;
}

@keyframes stamp {
  0% {
    transform: scale(3);
    opacity: 0;
  }
  50% {
    opacity: 0.5;
  }
  100% {
    transform: scale(1);
    opacity: 1;
  }
}

使用 Canvas 绘制动态印章

通过 Canvas API 动态绘制印章,适合需要更复杂图形的情况。

import React, { useRef, useEffect } from 'react';

const CanvasStamp = () => {
  const canvasRef = useRef(null);

  useEffect(() => {
    const canvas = canvasRef.current;
    const ctx = canvas.getContext('2d');

    // 绘制圆形印章
    ctx.beginPath();
    ctx.arc(100, 100, 80, 0, Math.PI * 2);
    ctx.strokeStyle = 'red';
    ctx.lineWidth = 3;
    ctx.stroke();

    // 绘制文字
    ctx.font = '20px Arial';
    ctx.fillStyle = 'red';
    ctx.textAlign = 'center';
    ctx.fillText('财务专用章', 100, 100);
  }, []);

  return <canvas ref={canvasRef} width={200} height={200} />;
};

export default CanvasStamp;

使用 SVG 实现矢量印章

SVG 实现的印章具有矢量特性,缩放不会失真。

import React from 'react';

const SvgStamp = () => {
  return (
    <svg width="200" height="200">
      <circle cx="100" cy="100" r="80" fill="none" stroke="red" strokeWidth="3" />
      <text x="100" y="100" fill="red" textAnchor="middle" dominantBaseline="middle" fontSize="20">
        公司公章
      </text>
    </svg>
  );
};

export default SvgStamp;

添加交互功能

结合 React 状态管理实现点击盖章效果。

react实现盖章

import React, { useState } from 'react';

const InteractiveStamp = () => {
  const [stamped, setStamped] = useState(false);

  return (
    <div onClick={() => setStamped(true)} style={{ cursor: 'pointer' }}>
      {stamped && (
        <div style={{
          width: '150px',
          height: '150px',
          border: '3px solid red',
          borderRadius: '50%',
          display: 'flex',
          justifyContent: 'center',
          alignItems: 'center',
          color: 'red',
          fontSize: '24px',
          transform: 'scale(1)',
          animation: 'stamp 0.5s ease-out'
        }}>
          已批准
        </div>
      )}
      {!stamped && <p>点击此处盖章</p>}
    </div>
  );
};

export default InteractiveStamp;

注意事项

  • 动画性能优化:使用 transformopacity 属性进行动画,避免使用 left/top 等性能较差的属性
  • 响应式设计:通过 vw/vh 单位或媒体查询确保印章在不同设备上显示正常
  • 浏览器兼容性:Canvas 和 SVG 在现代浏览器中支持良好,但需注意旧版本浏览器的兼容问题

标签: react
分享给朋友:

相关文章

react如何部署

react如何部署

部署 React 应用的常见方法 使用静态服务器部署 React 应用在构建后会生成静态文件,可以直接通过静态服务器部署。常用的静态服务器包括 Nginx、Apache 等。 运行构建命令生成静态文…

如何开发react

如何开发react

开发React应用的基本步骤 安装Node.js和npm 确保系统中已安装Node.js(包含npm)。可通过官网下载安装包,安装后验证版本: node -v npm -v 创建React项目…

react如何同步

react如何同步

React 同步状态管理方法 在 React 中实现同步状态管理,可以通过以下多种方式实现: 使用 useState 和 useEffect 钩子 通过 useState 定义状态,使用 useEf…

react如何发布

react如何发布

发布React应用的步骤 构建生产版本 使用以下命令生成优化后的生产版本代码,代码会被压缩并移除开发环境中的调试工具: npm run build 构建完成后会生成build文件夹,包含所有静态资源…

react如何使用redux

react如何使用redux

使用 Redux 在 React 中的应用 Redux 是一个状态管理库,通常与 React 结合使用以管理全局状态。以下是具体实现步骤: 安装依赖 确保项目中已安装 redux 和 react-r…

react如何渲染图片

react如何渲染图片

在React中渲染图片的方法 使用<img>标签直接引入本地图片 将图片文件放入项目目录(如src/assets),通过相对路径引入。需注意Webpack可能需要配置file-loader…