多边形蒙版 SVG 图像不适用于 React 中的 tsparticles

Polygon mask SVG image not working for tsparticles in React

我有一个 React 项目,我想使用 tsparticles 将我的徽标嵌入为多边形蒙版。 如果我使用官方文档页面中的示例代码,它可以正常工作,但是如果我尝试使用多边形遮罩选项,它似乎无法检测到 SVG 格式。不知道是不是浏览器的问题

下面是嵌入到我的 React 项目中的创建者来自 codepen 的原始代码。 我有自己的徽标,我存储在本地但是对于这个问题,我将使用代码原作者的代码。

import React from "react";
import { Container} from "@material-ui/core";
import Particles from "react-tsparticles";
//import polygonmasklogo from "./polygonmask.svg";


export default function Banner() {
 

  return (
    <Container >
      <Particles
        id="tsparticles"
        options={{
          background: {
            color: {
              value: "#fff",
            },
          },
          detectRetina: false,
          fpsLimit: 60,
          interactivity: {
            detectsOn: "canvas",
            events: {
              onHover: {
                enable: true,
                mode: "bubble",
              },
              resize: true,
            },
            modes: {
              bubble: {
                distance: 40,
                duration: 2,
                opacity: 8,
                size: 6,
                speed: 3,
              },
            },
          },
          particles: {
            color: {
              value: "#ff0000",
              animation: {
                enable: true,
                speed: 20,
                sync: true,
              },
            },
            lineLinked: {
              blink: false,
              color: "random",
              consent: false,
              distance: 30,
              enable: true,
              opacity: 0.3,
              width: 0.5,
            },
            move: {
              attract: {
                enable: false,
                rotate: {
                  x: 600,
                  y: 1200,
                },
              },
              bounce: false,
              direction: "none",
              enable: true,
              outMode: "bounce",
              random: false,
              speed: 1,
              straight: false,
            },
            number: {
              density: {
                enable: false,
                area: 2000,
              },
              limit: 0,
              value: 200,
            },
            opacity: {
              animation: {
                enable: true,
                minimumValue: 0.05,
                speed: 2,
                sync: false,
              },
              random: false,
              value: 1,
            },
            shape: {
              type: "circle",
            },
            size: {
              animation: {
                enable: false,
                minimumValue: 0.1,
                speed: 40,
                sync: false,
              },
              random: true,
              value: 1,
            },
          },
          polygon: {
            draw: {
              enable: true,
              lineColor: "rgba(255,255,255,0.2)",
              lineWidth: 0.3,
            },
            move: {
              radius: 10,
            },
            inlineArrangement: "equidistant",
            scale: 0.5,
            type: "inline",
            //url: {polygonmasklogo},
            url: "https://cdn.matteobruni.it/images/particles/smalldeer.svg",
          },
        }}
      />
    </Container>
  );
}

多边形蒙版 功能需要 pathseg 库才能在某些浏览器中正常工作(Chrome 在最新版本中删除了对 SVG 1.1 的支持)

pathseg 是一个类似于 tsParticles 的客户端库,因此如果您使用的框架使用 SSR,则需要查看客户端导入的文档。

我有一个工作示例 Next.js here

这是返回 <Particles /> 组件之前 Next.js 所需的代码:

if (process.browser) {
  require("pathseg");
}

如果您正在使用 React 客户端,只需像这样导入 pathseg

import "pathseg";

这应该可以解决您的问题。