javascript - reaccionar-partículas-js: No se puede establecer un fondo y un ancho

CorePress2024-01-24  11

Tengo instalado este react-particles-js, todo funciona bien como veo, pero ahora he creado un diseño personalizado y lo he asignado a la partícula a través de sus parámetros, así:

<Particles
          params={{
            particles: {
              number: { value: 35, density: { enable: true, value_area: 800 } },
              color: {
                value: [
                  'BB4D10',
                  '#820E42',
                  '#BD740F',
                  '#248592',
                  '#5F4DAF',
                  '#8BA00F',
                ],
              },
              shape: {
                type: 'circle',
                stroke: { width: 0, color: '#000000' },
                polygon: { nb_sides: 3 },
                image: { src: 'img/github.svg', width: 100, height: 100 },
              },
              opacity: {
                value: 1.5,
                random: false,
                anim: {
                  enable: false,
                  speed: 1,
                  opacity_min: 0.1,
                  sync: false,
                },
              },
              size: {
                value: 9,
                random: true,
                anim: {
                  enable: false,
                  speed: 43.15684315684316,
                  size_min: 0.1,
                  sync: false,
                },
              },
              line_linked: {
                enable: true,
                distance: 100.82952832645452,
                color: '#ffffff',
                opacity: 1.4,
                width: 1,
              },
              move: {
                enable: true,
                speed: 2,
                direction: 'none',
                random: true,
                straight: false,
                out_mode: 'out',
                bounce: false,
                attract: { enable: false, rotateX: 600, rotateY: 1200 },
              },
            },
            interactivity: {
              detect_on: 'canvas',
              events: {
                onhover: { enable: true, mode: 'bubble' },
                onclick: { enable: false, mode: 'push' },
                resize: true,
              },
              modes: {
                grab: { distance: 400, line_linked: { opacity: 1 } },
                bubble: {
                  distance: 109.63042366068159,
                  size: 13,
                  duration: 2,
                  opacity: 8,
                  speed: 3,
                },
                repulse: { distance: 200, duration: 0.4 },
                push: { particles_nb: 4 },
                remove: { particles_nb: 2 },
              },
            },
            retina_detect: true,
          }}
          style={styling}
        />

Después de eso, estoy intentando agregar un color de fondo para que se vea correctamente, pero como puedo ver, el estilo que intento pasar a la partícula simplemente no funciona, al menos se aplica la posición.

const styling = {
  backgroundColor: '#2a2e31',
  position: 'absolute',
  width: '10%',
};



------------------------------------

Hay varias formas de controlar el estilo:

Puede proporcionar una propiedad className para el contenedor del lienzo y una propiedad width para el ancho del lienzo:
<Particles
  ...
  style={styling}
  width="10%"
  className="particles-wrapper"
/>

Y escribe el CSS:

.particles-wrapper {
  background-color: #2a2e31;
  height: 100%;
  width: 10%; // You may need this or may not depending on your requirement
}

O bien, puede agregar un nuevo div que envuelva las <Partículas .. /> y establezca el estilo para este div ya que el lienzo predeterminado es transparente.

O bien, puedes usar el accesorio canvasClassName y establecer el estilo para esta clase.

Aquí hay una instantánea después de usar el primer método anterior:

La razón por la que necesitamos pasar el ancho y el alto por separado es que, como se ve en el código fuente, los presentes en props.style se sobrescriben de esta manera:

style={{
  ...this.props.style,
  width,
  height
}}



------------------------------------

La forma más sencilla de establecer un fondo para las partículas es utilizando la opción de fondo.

<Particles params={{
  background: {
    color: "#000"
  },
  /* all other options you set */
}} />

Esto hará retrocedersuelo a la lona. Si necesita uno transparente, utilice la respuesta @ajeet-shah.

Su guía para un futuro mejor - libreflare
Su guía para un futuro mejor - libreflare