当前位置:首页 > 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 和 npm 确保已安装 Node.js(建议版本 16 或更高)和 npm(Node.js 自带)。可通过以下命令检查版本: nod…

如何评价react native

如何评价react native

React Native 的优势 跨平台开发效率高:基于 JavaScript 和 React 语法,可同时开发 iOS 和 Android 应用,减少重复代码量。性能接近原生:通过原生组件渲染,性能…

如何react页面

如何react页面

创建 React 页面 使用 create-react-app 快速初始化项目: npx create-react-app my-app cd my-app npm start 基础页面结构 在 s…

如何优化react

如何优化react

优化 React 性能的方法 使用 React.memo 或 PureComponent 对于函数组件,使用 React.memo 进行记忆化,避免不必要的重新渲染。类组件可以使用 PureCompo…

如何改造react

如何改造react

改造 React 项目的关键方法 分析当前项目结构 通过评估现有组件、状态管理和依赖项,明确需要改进的部分。使用工具如 webpack-bundle-analyzer 识别性能瓶颈。 升级 Rea…

react如何衰减

react如何衰减

React 中的动画衰减效果实现 在 React 中实现衰减效果(如滚动衰减、拖动释放后的惯性滑动)通常需要结合物理动画原理或第三方动画库。以下是几种常见方法: 使用 CSS 动画和 @keyf…