1.3.15 • Published 2 years ago

text-particle v1.3.15

Weekly downloads
-
License
ISC
Repository
github
Last release
2 years 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

2 years ago

1.3.14

2 years ago

1.3.13

2 years ago

1.3.12

2 years ago

1.3.11

2 years ago

1.3.10

2 years ago

1.3.9

2 years ago

1.3.8

2 years ago

1.3.7

2 years ago

1.3.6

2 years ago

1.3.5

2 years ago

1.3.4

2 years ago

1.3.3

2 years ago

1.3.2

2 years ago

1.3.1

2 years ago

1.3.0

2 years ago

1.2.9

2 years ago

1.2.8

2 years ago

1.2.7

2 years ago

1.2.6

2 years ago

1.2.5

2 years ago

1.2.4

2 years ago

1.2.3

2 years ago

1.2.2

2 years ago

1.2.1

2 years ago

1.2.0

2 years ago

1.1.0

2 years ago

1.0.9

2 years ago

1.0.8

2 years ago

1.0.7

2 years ago

1.0.6

2 years ago

1.0.5

2 years ago

1.0.4

2 years ago

1.0.2

2 years ago

1.0.1

2 years ago

1.0.0

2 years ago