<div id="app">
<div id="hero">
<h1>PARTICLES<br/>CURSOR</h1>
<a target="_blank" href="https://github.com/klevron/threejs-toys">github/threejs-toys</a>
</div>
</div>
body, html, #app {
margin: 0;
width: 100%;
height: 100%;
}
#app {
overflow: hidden;
touch-action: pan-up;
color: #ffffff;
font-family: 'Montserrat', sans-serif;
text-align: center;
text-shadow: 0 0 5px #ffffff, 0 0 20px #000, 0 0 30px #000;
}
#app h1 {
--fontSize: 60px;
--lineHeight: 80px;
width: auto;
height: calc(2 * var(--lineHeight));
line-height: var(--lineHeight);
margin: calc(50vh - var(--lineHeight)) auto 0;
font-size: var(--fontSize);
}
#app a {
margin-top: 10px;
display: inline-block;
text-decoration: none;
color: #fff;
}
#app canvas {
display: block;
position: fixed;
z-index: -1;
top: 0;
}
import { particlesCursor } from 'https://unpkg.com/threejs-toys@0.0.8/build/threejs-toys.module.cdn.min.js'
const pc = particlesCursor({
el: document.getElementById('app'),
gpgpuSize: 512,
colors: [0x00ff00, 0x0000ff],
color: 0xff0000,
coordScale: 0.5,
noiseIntensity: 0.001,
noiseTimeCoef: 0.0001,
pointSize: 5,
pointDecay: 0.0025,
sleepRadiusX: 250,
sleepRadiusY: 250,
sleepTimeCoefX: 0.001,
sleepTimeCoefY: 0.002
})
document.body.addEventListener('click', () => {
pc.uniforms.uColor.value.set(Math.random() * 0xffffff)
pc.uniforms.uCoordScale.value = 0.001 + Math.random() * 2
pc.uniforms.uNoiseIntensity.value = 0.0001 + Math.random() * 0.001
pc.uniforms.uPointSize.value = 1 + Math.random() * 10
})
This Pen doesn't use any external JavaScript resources.