DNA

tech

Two sine-wave helices are drawn at an angle offset of π, connected by horizontal rung characters. The helix rotates over time and perspective depth is faked with opacity.

Gallery

Live preview

Framework examples

DNABackground.tsx
import { useEffect, useRef } from 'react';
import { asciiBackground } from 'asciify-engine';

export function DnaBackground() {
  const ref = useRef<HTMLDivElement>(null);

  useEffect(() => {
    if (!ref.current) return;
    const { destroy } = asciiBackground(ref.current, {
      type: 'dna',
      opacity: 0.15,
      colorScheme: 'auto',
    });
    return destroy;
  }, []);

  return (
    <div ref={ref} style={{ position: 'relative', minHeight: '100vh' }}>
      {/* your content goes here */}
    </div>
  );
}

DNA-specific options

No type-specific options.

Shared options

OptionTypeDefaultDescription
opacitynumber0.15Overall canvas opacity (0–1).
colorScheme'dark' | 'light' | 'auto''auto'Color palette. 'auto' follows prefers-color-scheme.
fontSizenumber14Character size in px — controls grid density.
speednumber1Animation speed multiplier.
interactivebooleantrueEnable mouse/pointer interaction.
zIndexnumber0CSS z-index of the injected canvas.

Direct renderer

Use the standalone render function directly in your own RAF loop for full control.

renderDNABackground.ts
import { renderDnaBackground } from 'asciify-engine';

const canvas = document.querySelector('canvas')!;
const ctx = canvas.getContext('2d')!;

const colors = {
  primary:    '#d4ff00',
  secondary:  '#ffffff',
  background: '#0a0a0a',
};

const start = performance.now();

function tick() {
  const t = (performance.now() - start) / 1000;
  ctx.clearRect(0, 0, canvas.width, canvas.height);
  renderDnaBackground(ctx, canvas.width, canvas.height, t, colors, 0.9);
  requestAnimationFrame(tick);
}

requestAnimationFrame(tick);
Buy Me A Coffee