1.3.15 • Published 8 months ago

text-particle v1.3.15

Weekly downloads
-
License
ISC
Repository
github
Last release
8 months ago

TextParticle

Create high performance particle transition effects for text and image.

Preview

preview_gif_1

preview_gif_2

preview_1

preview_2

preview_3

preview_4

preview_5

Installation

Install text-particle using npm:

npm install text-particle

Usage

The library contains two particle effects:

  • TextParticle
  • ImageParticle

If you want to render particles with high performance, enable the option 'enableWebGL'.

If you want to run yourself, see Example

You can get more details from the sample:

text particle effect:

function renderTextParticle() {
  const text = ['Klee', 'Ganyu']
  const color = ['#e75945', '#80b0e1']

  const root = document.getElementById('container_1')
  if (!root) {
    return
  }

  const particleEffect = new TextParticle(root, {
    source: text[0],
    color: color[0],
    // Custom font need to set in css '@font-face' first 
    font: 'bold 200px lai',
    textAlign: 'center',
    particleGap: 6,
    particleRadius: 3,
    showMouseCircle: true,
    enableContinuousEasing: true,
    enableWebGL: true
  })

  particleEffect.render()
  // tips: If you enable the option 'enableContinuousEasing'
  // the transition time will not work.
  particleEffect.transitionTo(
    text[1],
    6000,
    { color: color[1] }
  )

  fromEvent(window, 'resize').pipe(debounceTime(100)).subscribe(() => {
    particleEffect.resize()
  })
}

image particle effect:

function renderImageParticle() {
  const images = ['/image1.png', '/image2.png']

  const root = document.getElementById('container_2')
  if (!root) {
    return
  }

  const particleEffect = new ImageParticle(root, {
    source: images[0],
    // color: '#ffffff',
    autoFit: true,
    particleGap: 4,
    particleRadius: 2,
    showMouseCircle: true,
    enableContinuousEasing: true,
    enableWebGL: true,
    // it is important to filter color
    pixelFilter: (r, g, b, a) => {
      return (r + g + b) > 0 && a > 10
    }
  })

  particleEffect.render()
  // tips: If you enable the option 'enableContinuousEasing'
  // the transition time will not work.
  particleEffect.transitionTo(images[1], 6000)

  fromEvent(window, 'resize').pipe(debounceTime(100)).subscribe(() => {
    particleEffect.resize()
  })
}
1.3.15

8 months ago

1.3.14

8 months ago

1.3.13

8 months ago

1.3.12

8 months ago

1.3.11

8 months ago

1.3.10

8 months ago

1.3.9

8 months ago

1.3.8

8 months ago

1.3.7

8 months ago

1.3.6

8 months ago

1.3.5

8 months ago

1.3.4

8 months ago

1.3.3

8 months ago

1.3.2

8 months ago

1.3.1

8 months ago

1.3.0

8 months ago

1.2.9

9 months ago

1.2.8

9 months ago

1.2.7

9 months ago

1.2.6

9 months ago

1.2.5

9 months ago

1.2.4

9 months ago

1.2.3

9 months ago

1.2.2

9 months ago

1.2.1

9 months ago

1.2.0

9 months ago

1.1.0

9 months ago

1.0.9

9 months ago

1.0.8

9 months ago

1.0.7

9 months ago

1.0.6

9 months ago

1.0.5

9 months ago

1.0.4

9 months ago

1.0.2

9 months ago

1.0.1

9 months ago

1.0.0

9 months ago