PixelFloat

Gentle vertical sine loop, perfect for hero badges and floating accents.

  • Configurable travel distance, duration, easing, and repeat count
  • Trigger modes: mount, hover, focus, viewport
  • Signals the end of its last iteration: onComplete (React), @complete (Vue), (complete) (Angular)
  • Respects prefers-reduced-motion automatically
Status
stable
Category
animations
Since
v1.6.0

API

import { PixelFloat } from '@pxlkit/ui-kit';
PropTypeDefaultDescription
children (required)React.ReactNode—Content to float.
durationnumber2200Animation duration in milliseconds. Default 2200.
distancenumber6Vertical travel distance in pixels. Default 6.
repeatnumber | 'infinite''infinite'Iteration count: a number or 'infinite'. Default 'infinite'.
easingstring'ease-in-out'CSS animation-timing-function. Default 'ease-in-out'.
trigger'mount' | 'hover' | 'click' | 'focus' | 'inView' | boolean'mount'When the animation should play. Default 'mount'.
onComplete() => void—Fires after the final iteration.
classNamestring—Extra class names applied to the wrapping <div>.

ref points to <div>.

Accessibility

WCAG target: 2.1 AA

  • respects prefers-reduced-motion

Animation is suppressed when the user has requested reduced motion.

Usage

import { PixelFloat } from '@pxlkit/ui-kit';

export function Default() {
  return (
    <PixelFloat>
      <span>Float</span>
    </PixelFloat>
  );
}

Examples

Default

import { PixelFloat } from '@pxlkit/ui-kit';

export function Default() {
  return (
    <PixelFloat>
      <span>Float</span>
    </PixelFloat>
  );
}

Farther Travel

import { PixelFloat } from '@pxlkit/ui-kit';

export function FartherTravel() {
  return (
    <PixelFloat distance={14} duration={2800}>
      <span>Drifting Higher</span>
    </PixelFloat>
  );
}

Hover Trigger

import { PixelFloat } from '@pxlkit/ui-kit';

export function HoverTrigger() {
  return (
    <PixelFloat trigger="hover" repeat={3}>
      <span>Hover me</span>
    </PixelFloat>
  );
}

Related