当前位置:首页 > React

react实现盖章

2026-01-26 15:21:19React

React 实现盖章效果的方法

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

使用 CSS 动画和伪元素

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

react实现盖章

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 动态绘制印章,适合需要更复杂图形的情况。

react实现盖章

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 状态管理实现点击盖章效果。

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 native如何启动

react native如何启动

React Native 启动步骤 确保已安装 Node.js(建议版本 14 或更高)和 npm/yarn。安装完成后,通过命令行工具执行以下操作。 初始化新项目 使用 React Native…

如何优化react

如何优化react

优化 React 性能的方法 使用 React.memo 进行组件记忆 React.memo 是一个高阶组件,用于缓存函数组件的渲染结果,避免不必要的重新渲染。只有当组件的 props 发生变化时,才…

react native 如何

react native 如何

React Native 开发基础 React Native 是一个用于构建跨平台移动应用的框架,允许开发者使用 JavaScript 和 React 编写代码,同时生成原生 iOS 和 Androi…

如何生成react代码

如何生成react代码

使用 Create React App 生成项目 安装 Node.js 后,通过命令行工具运行以下命令创建新项目: npx create-react-app my-app cd my-app np…

如何降低react版本

如何降低react版本

降低 React 项目版本的步骤 检查当前 React 版本 运行以下命令查看项目中安装的 React 当前版本: npm list react 或 yarn list react 修…

react如何更新

react如何更新

更新 React 版本的方法 检查当前 React 版本 运行以下命令查看项目中安装的 React 版本: npm list react 更新 React 及相关依赖 通过 npm 或 yarn…