syaivoalpha

Halftone

Dots breathe in and out along flowing ribbons, turning noise into rhythm. Print-era aesthetics meet fluid motion.

Preview

Usage

import { createHalftone } from 'syaivo';

const effect = createHalftone({
  dotColor: '#a5f3fc',
  pixelSize: 9,
  contrast: 1.6,
  angle: 135,
  speed: 0.8,
});

effect.mount(document.getElementById('hero')!);

Options

OptionTypeDefaultDescription
dotColorstring"#a5f3fc"Dot fill color
colorsstring[][]Optional palette — dots interpolate across it
backgroundColorstring"#0a0a0a"Canvas background
pixelSizenumber9Dot cell size in px
dotMinnumber0.06Min dot radius (fraction of cell)
dotMaxnumber0.48Max dot radius (fraction of cell)
dotThresholdnumber0.14Skip dots below this shade
contrastnumber1.6Shade-to-radius gamma
invertbooleanfalseInvert shade mapping
anglenumber135Gradient angle in degrees
noiseIntensitynumber0.35Animated noise distortion
opacitynumber0.9Global dot opacity
speednumber0.8Animation speed multiplier
waveFrequencynumber2.8Number of flowing wave bands
waveAmplitudenumber0.12Vertical wave displacement (0–1)
waveSpeednumber1.1Ribbon phase speed
ribbonWidthnumber0.14Ribbon thickness (fraction of height)
ribbonSoftnessnumber2.2Ribbon edge sharpness
animatedbooleantrueEnable animation
respectReducedMotionbooleantrueHonor prefers-reduced-motion

Dynamic Updates

effect.update({ pixelSize: 12, contrast: 2 });

Example

Introducing your product

Build something
people remember

A polished experience starts with the details. Ship interfaces that feel considered from the first pixel.

Get startedDocumentation

On this page