vue3-bits

Vue3 + TresJS reusable 3D components (ModelViewer first).
1,418
Install
npm install vue3-bits
Latest Version:0.3.0
Vue:3
Last Updated:Oct 24, 2026
Links: npm
Maintainer: lvminjie

vue3-bits

Vue 3 动画组件库,以 Vue 3 重新实现常见交互与视觉效果。 A Vue 3 animation component library that re-implements common interactions and visual effects in Vue 3.

说明:本项目所有组件均为独立重新实现,遵循各自开源许可。 Note: every component here is an independent re-implementation under its own open-source license.

链接 / Links

快速开始 / Quick Start

npm install vue3-bits

⚠️ 必须引入样式 / Import the stylesheet once: 组件样式统一构建到 dist/style.css,通过 vue3-bits/style.css 子路径引入一次即可(包已配置该导出,无需在 vite.config 配 alias),否则样式不生效。 ⚠️ You must import the stylesheet once: all component styles are bundled into dist/style.css. Import vue3-bits/style.css once (the package exports this subpath, no vite.config alias needed), otherwise styles will not apply.

import { createApp } from 'vue'
import App from './App.vue'
import 'vue3-bits/style.css' // ← 必须引入 / required(无需在 vite.config 配 alias)

createApp(App).mount('#app')

组件教程 / Component Tutorial

共 182 个组件,按分类组织如下。 182 components in total, grouped by category below.

复制说明 / Copy note:GitHub 与 Gitee 会在每个代码块右上角提供原生“复制”按钮;在线演示页也提供交互式复制——这已满足“复制按钮”需求。 Copy note: both GitHub and Gitee render a native "Copy" button at the top-right of every code block, and the live demo page offers interactive copying — this already fulfills the "copy button" requirement.

3D

Background

Interaction

Text

ModelViewer

TresJS 模型查看器

引入 / Import

import { ModelViewer } from 'vue3-bits'

Props

属性 类型 默认值 说明
url string — Model URL (required). Supports .glb / .gltf / .fbx / .obj.
width number | string 400 Canvas width. Number is treated as px.
height number | string 400 Canvas height. Number is treated as px.
modelXOffset number 0 Billboard horizontal offset in NDC space.
modelYOffset number 0 Billboard vertical offset in NDC space.
defaultRotationX number -50 Initial rotation around X axis, in degrees.
defaultRotationY number 20 Initial rotation around Y axis, in degrees.
defaultZoom number 0.5 Initial camera Z distance.
minZoomDistance number 0.5 Minimum zoom distance (OrbitControls / pinch).
maxZoomDistance number 10 Maximum zoom distance (OrbitControls / pinch).
enableMouseParallax boolean true Enable mouse parallax (non-touch only).
enableManualRotation boolean true Enable drag-to-rotate.
enableHoverRotation boolean true Enable hover rotation (non-touch only).
enableManualZoom boolean true Enable manual zoom (OrbitControls / pinch).
ambientIntensity number 0.3 Ambient light intensity.
keyLightIntensity number 1 Key (top-right) directional light intensity.
fillLightIntensity number 0.5 Fill (left) directional light intensity.
rimLightIntensity number 0.8 Rim (back) directional light intensity.
environmentPreset EnvironmentPreset 'forest' Environment preset. 'none' disables it.
autoFrame boolean false Automatically frame the model by computing camera distance from fov.
placeholderSrc string '' Image shown (blurred) while loading.
showScreenshotButton boolean true Show the screenshot button.
fadeIn boolean false Fade material opacity from 0 to 1 on load.
autoRotate boolean false Continuously auto-rotate the model.
autoRotateSpeed number 0.35 Auto-rotate speed in radians per second.
onModelLoaded () => void — Callback fired once the model is loaded & normalized.

使用示例 / Usage

<script setup lang="ts">
import { ref } from 'vue'
import { ModelViewer } from 'vue3-bits'

const url =
  'https://.../ToyCar.glb'
</script>

<template>
  <ModelViewer
    :url="url"
    :width="480"
    :height="480"
    environment-preset="forest"
    :auto-rotate="true"
    :enable-mouse-parallax="true"
    :fade-in="true"
    :show-screenshot-button="true"
  />
</template>

CircularGallery

ogl 环形画廊

引入 / Import

import { CircularGallery } from 'vue3-bits'

Props

属性 类型 默认值 说明
items GalleryItem[] — Gallery items. Falls back to a built-in default set when omitted.
bend number 3 Curvature amount (0 = flat).
textColor string '#ffffff' Caption / label color.
borderRadius number 0.05 Corner radius of each plane (0..1 in the original units).
font string 'bold 30px Figtree' Canvas font string, e.g. 'bold 30px Figtree'.
fontUrl string — Optional font stylesheet or file URL loaded on demand.
scrollSpeed number 2 Scroll sensitivity.
scrollEase number 0.05 Scroll easing factor (0..1).
cardBackgroundColor string '#2e3350' Placeholder card background color shown before/while images load.

使用示例 / Usage

<script setup lang="ts">
import { CircularGallery } from 'vue3-bits'
</script>

<template>
  <div style="height: 420px">
    <CircularGallery
      :items="[{ image: '/a.jpg', text: 'A' }]"
      :bend="3"
      :scroll-speed="4"
    />
  </div>
</template>

FluidGlass

TresJS 流体玻璃

引入 / Import

import { FluidGlass } from 'vue3-bits'

Props

属性 类型 默认值 说明
mode FluidGlassMode 'lens' Which glass geometry / behaviour to render. Default 'lens'.
lensProps FluidGlassModeProps — Overrides applied in lens mode.
barProps FluidGlassModeProps — Overrides applied in bar mode (also carries navItems).
cubeProps FluidGlassModeProps — Overrides applied in cube mode.
className string '' Class applied to the root wrapper.
width number | string 400 Canvas width. A number is treated as px. Default 400.
height number | string 400 Canvas height. A number is treated as px. Default 400.

使用示例 / Usage

<script setup lang="ts">
import { FluidGlass } from 'vue3-bits'
</script>

<template>
  <div style="height: 400px; position: relative">
    <FluidGlass
      mode="lens"
      :lens-props="{ scale: 0.25, ior: 1.15, thickness: 5, chromaticAberration: 0.1, anisotropy: 0.01 }"
    />
  </div>
</template>

Cubes

3D 立方体网格

引入 / Import

import { Cubes } from 'vue3-bits'

Props

属性 类型 默认值 说明
gridSize number 10 Number of cubes per row/column — the grid is gridSize × gridSize.
cubeSize number — Fixed cube size in px. When omitted (default) the grid stretches to fill its container (1fr tracks); when set, both ro…
maxAngle number 45 Maximum tilt angle (degrees) applied at the centre of the influence.
radius number 3 Influence radius (in grid cells) of the pointer / sim. Cubes within this distance tilt; the further out, the smaller the…
easing string 'power3.out' gsap ease string for the tilt-in tween (e.g. 'power3.out').
duration Duration — Enter / leave tilt durations (seconds).
cellGap number | Gap — Gap between cells: a single number (both axes) or a {row,col} object (px).
borderStyle string '1px solid #fff' CSS border value applied to every cube face.
faceColor string '#120F17' Background color of every cube face.
shadow boolean | string false Box-shadow on each cube: false (none), true (default shadow) or a CSS string.
autoAnimate boolean true Run the idle auto-animation path when the pointer is inactive.
rippleOnClick boolean true Fire an expanding color ripple from the clicked cell.
rippleColor string '#fff' Color of the click ripple.
rippleSpeed number 2 Ripple speed multiplier (higher = faster spread).
className string '' Extra CSS class appended to the root element.
style CSSProperties — Inline style object merged onto the root element.

使用示例 / Usage

<script setup lang="ts">
import { Cubes } from 'vue3-bits'
</script>

<template>
  <div style="height: 600px; position: relative">
    <Cubes
      :grid-size="10"
      :max-angle="45"
      :radius="3"
      border-style="2px dashed #B497CF"
      face-color="#1a1a2e"
      ripple-color="#ff6b6b"
      :ripple-speed="1.5"
      auto-animate
      ripple-on-click
    />
  </div>
</template>

ProfileCard

3D 倾斜名片

引入 / Import

import { ProfileCard } from 'vue3-bits'

Props

属性 类型 默认值 说明
avatarUrl string '' Avatar image (any URL, but a data:image/svg+xml,... URI keeps it offline).
iconUrl string — Decorative "icon pattern" used as a luminance mask over the holo sheen.
grainUrl string — Optional film-grain texture layered into the holo effect.
innerGradient string — CSS background applied to the card interior behind the avatar.
behindGlowEnabled boolean true Render the radial glow that sits behind the card.
behindGlowColor string — Color of the behind glow (any CSS color).
behindGlowSize string — Radius/extent of the behind glow (e.g. 50%).
className string '' Extra CSS class appended to the root wrapper.
enableTilt boolean true Enable the pointer-driven 3D tilt.
enableMobileTilt boolean false On touch devices, request device-orientation permission to drive the tilt.
mobileTiltSensitivity number 5 How strongly device tilt maps to pointer offset on mobile.
miniAvatarUrl string — Smaller avatar shown in the contact bar (falls back to avatarUrl).
name string 'Javi A. Torres' Display name.
title string 'Software Engineer' Subtitle / role.
handle string 'javicodes' Social handle (rendered as @handle).
status string 'Online' Status pill text (e.g. Online).
contactText string 'Contact' Contact button label.
showUserInfo boolean true Show the bottom contact bar with mini-avatar + handle + status.
onContactClick () => void — Called when the contact button is clicked.

使用示例 / Usage

<script setup lang="ts">
import ProfileCard from 'vue3-bits'
</script>

<template>
  <ProfileCard
    :avatar-url="avatarDataUri"
    name="Javi A. Torres"
    title="Software Engineer"
    handle="javicodes"
    status="Online"
    contact-text="Contact Me"
    :show-user-info="true"
    :enable-tilt="true"
    :behind-glow-enabled="true"
    behind-glow-color="rgba(125, 190, 255, 0.67)"
    @contact-click="() => console.log('Contact clicked')"
  />
</template>

Carousel

CSS 3D 透视轮播

引入 / Import

import { Carousel } from 'vue3-bits'

Props

属性 类型 默认值 说明
items CarouselItem[] — Cards to display. Defaults to the 5-item sample.
baseWidth number 300 Width (px) of the carousel viewport; the card width derives from it.
autoplay boolean false Advance to the next card automatically on a timer.
autoplayDelay number 3000 Autoplay interval in ms.
pauseOnHover boolean false Pause the autoplay timer while the pointer is over the carousel.
loop boolean false Infinite loop — clones the first/last cards and wraps seamlessly.
round boolean false Circular "round" variant (square cards + round container).
className string '' Extra CSS class appended to the root element.
style CSSProperties — Inline style merged onto the root element.

使用示例 / Usage

<script setup lang="ts">
import { Carousel } from 'vue3-bits'
</script>

<template>
  <div style="height: 420px; position: relative">
    <Carousel
      :base-width="340"
      autoplay
      :autoplay-delay="3000"
      :pause-on-hover="false"
      :loop="false"
      :round="false"
    />
  </div>
</template>

Background

Lightfall

ogl 光束背景

引入 / Import

import { Lightfall } from 'vue3-bits'

Props

属性 类型 默认值 说明
colors string[] — Streak palette colors as hex strings. Defaults to the gradient.
color1 string — Individual streak colors. When all three (color1 + color2 + color3) are provided they take precedence over `colors…
color2 string — See color1.
color3 string — See color1.
backgroundColor string '#0A29FF' Background color as a hex string.
speed number 0.5 Animation speed multiplier.
streakCount number 2 Number of light streaks (clamped to 1..16 at runtime).
streakWidth number 1 Streak width.
streakLength number 1 Streak length.
glow number 1 Glow intensity.
density number 0.6 Streak density, 0..1.
twinkle number 1 Twinkle amount.
zoom number 3 Zoom level.
backgroundGlow number 0.5 Background glow amount.
opacity number 1 Overall opacity, 0..1.
mouseInteraction boolean true Enable mouse interaction.
mouseStrength number 0.5 Mouse interaction strength.
mouseRadius number 1 Mouse interaction radius.
mouseDampening number 0.15 Mouse position dampening factor; 0 disables damping.
dpr number — Device pixel ratio override. undefined → window.devicePixelRatio.
paused boolean false Pause the animation loop.
className string — Extra CSS class applied to the container element.
mixBlendMode string — CSS mix-blend-mode value applied to the container element.

使用示例 / Usage

<script setup lang="ts">
import { Lightfall } from 'vue3-bits'
</script>

<template>
  <!-- wrap in a sized element; the canvas fills its parent -->
  <div style="position: relative; height: 460px">
    <Lightfall
      color1="#A6C8FF"
      color2="#5227FF"
      color3="#FF9FFC"
      background-color="#0A29FF"
      :speed="0.5"
      :streak-count="2"
      :streak-width="1"
      :streak-length="1"
      :glow="1"
      :density="0.6"
      :twinkle="1"
      :zoom="3"
      :background-glow="0.5"
      :opacity="1"
      :mouse-interaction="true"
      :mouse-strength="0.5"
      :mouse-radius="1"
    />
  </div>
</template>

LiquidEther

WebGL Navier-Stokes 流体模拟背景

引入 / Import

import { LiquidEther } from 'vue3-bits'

Props

属性 类型 默认值 说明
mouseForce number 20 Strength of the force injected by the pointer / auto driver.
cursorSize number 100 Radius (in simulation cells) of the injected force brush.
isViscous boolean false Enable the viscous (diffusion) solve.
viscous number 30 Viscosity coefficient used when isViscous is true.
iterationsViscous number 32 Jacobi iterations for the viscous solve.
iterationsPoisson number 32 Jacobi iterations for the pressure (Poisson) solve.
dt number 0.014 Simulation time step.
BFECC boolean true Use BFECC advection (higher quality) instead of plain semi-Lagrangian.
resolution number 0.5 Simulation resolution as a fraction of the container size (0..1).
isBounce boolean false Bounce velocity at the boundary instead of a free-slip wall.
colors string[] — Palette colours (hex strings) mapped to the velocity magnitude.
className string '' Extra class applied to the root container (does not override base class).
autoDemo boolean true Run the autonomous mouse-driver demo when the user is idle.
autoSpeed number 0.5 Speed of the auto driver.
autoIntensity number 2.2 Multiplier applied to the auto driver's pointer delta.
takeoverDuration number 0.25 Seconds the auto driver spends taking over from the user's pointer.
autoResumeDelay number 1000 Idle milliseconds before the auto driver resumes.
autoRampDuration number 0.6 Ramp-up duration (seconds) of the auto driver after resume.

使用示例 / Usage

<script setup lang="ts">
import { LiquidEther } from 'vue3-bits'
</script>

<template>
  <!-- wrap in a sized element; the canvas fills its parent -->
  <div style="position: relative; height: 340px">
    <LiquidEther
      :colors="['#5227FF', '#FF9FFC', '#B497CF']"
      :mouse-force="20"
      :cursor-size="100"
      :viscous="30"
      :auto-speed="0.5"
      :auto-intensity="2.2"
    />
  </div>
</template>

FloatingLines

全屏着色器浮动线条背景

引入 / Import

import { FloatingLines } from 'vue3-bits'

Props

属性 类型 默认值 说明
linesGradient string[] — Gradient stops (max 8) applied along each line. Missing → background shading.
enabledWaves Array<'top' | 'middle' | 'bottom'> — Which waves render. Default ['top', 'middle', 'bottom'].
lineCount number | number[] — Lines per wave: number (all) or per-wave array indexed by enabledWaves.
lineDistance number | number[] — Distance between lines: number (all) or per-wave array. ×0.01 in shader.
topWavePosition WavePosition — Position of the top wave. Default { x: 10, y: 0.5, rotate: -0.4 }.
middleWavePosition WavePosition — Position of the middle wave. Default { x: 5, y: 0, rotate: 0.2 }.
bottomWavePosition WavePosition — Position of the bottom wave. Default { x: 2.0, y: -0.7, rotate: -1 }.
animationSpeed number 1 Animation time multiplier. Default 1.
interactive boolean true Enable mouse bending interaction. Default true.
bendRadius number 5.0 Radial falloff around the cursor for the bend effect. Default 5.0.
bendStrength number -0.5 Bend strength. Default -0.5.
mouseDamping number 0.05 Mouse / parallax easing factor. Default 0.05.
parallax boolean true Enable parallax offset that follows the cursor. Default true.
parallaxStrength number 0.2 Parallax strength. Default 0.2.
mixBlendMode string 'screen' CSS mix-blend-mode applied to the container. Default 'screen'.
className string '' Extra CSS class applied to the root container (passed through).

使用示例 / Usage

<script setup lang="ts">
import { FloatingLines } from 'vue3-bits'
</script>

<template>
  <div style="width: 100%; height: 600px; position: relative">
    <FloatingLines
      :line-count="8"
      :line-distance="8"
      :bend-radius="8"
      :bend-strength="-2"
      interactive
      :parallax="true"
      :animation-speed="1"
    />
  </div>
</template>

LightRays

ogl 光束背景

引入 / Import

import { LightRays } from 'vue3-bits'

Props

属性 类型 默认值 说明
raysOrigin RaysOrigin — Where the rays originate from (see {@link RaysOrigin}).
raysColor string — Ray color as a #rgb / #rrggbb hex string.
raysSpeed number — Animation speed multiplier.
lightSpread number 0.5 Angular spread of the rays (higher = tighter cone).
rayLength number 3 Ray length multiplier.
pulsating boolean — Whether the brightness pulses over time.
fadeDistance number — Distance (in fraction of width) before the rays fade out.
saturation number — Color saturation; 1 leaves colors unchanged.
followMouse boolean — Whether the rays bend toward the mouse.
mouseInfluence number — How strongly the mouse bends the rays (0..1).
noiseAmount number — Amount of noise applied to the rays.
distortion number — Distortion wobble applied to the ray angle.
className string — Extra CSS class applied to the container element.

使用示例 / Usage

<script setup lang="ts">
import { LightRays } from 'vue3-bits'
</script>

<template>
  <!-- wrap in a sized element; the canvas fills its parent -->
  <div style="position: relative; height: 340px">
    <LightRays
      rays-origin="top-center"
      rays-color="#ffffff"
      :rays-speed="1"
      :light-spread="1"
      :ray-length="2"
      :follow-mouse="true"
      :mouse-influence="0.1"
    />
  </div>
</template>

LineWaves

ogl 波浪线背景

引入 / Import

import { LineWaves } from 'vue3-bits'

Props

属性 类型 默认值 说明
speed number — Animation speed multiplier.
innerLineCount number — Number of lines drawn near the inner (vertical-centre) region.
outerLineCount number — Number of lines drawn near the outer regions.
warpIntensity number — How strongly the field is warped by the noise displacement.
rotation number -33 Field rotation in degrees.
edgeFadeWidth number — Width of the soft top/bottom edge fade (0 = no fade).
colorCycleSpeed number — Speed at which the gradient cycles through colors.
brightness number 1 Overall brightness of the rendered lines.
color1 string — First gradient / line color (hex).
color2 string — Second gradient / line color (hex).
color3 string — Third gradient / line color (hex).
enableMouseInteraction boolean — Whether the field bends toward the pointer.
mouseInfluence number — Strength of the pointer warp.

使用示例 / Usage

<script setup lang="ts">
import { LineWaves } from 'vue3-bits'
</script>

<template>
  <div style="position: relative; height: 340px">
    <LineWaves
      :speed="0.3"
      :inner-line-count="32"
      :outer-line-count="36"
      :warp-intensity="1"
      :rotation="-45"
      :color1="'#ffffff'"
      :color2="'#ffffff'"
      :color3="'#ffffff'"
    />
  </div>
</template>

Radar

ogl 雷达扫描背景

引入 / Import

import { Radar } from 'vue3-bits'

Props

属性 类型 默认值 说明
speed number — Animation speed multiplier.
scale number 0.9 Scale of the radar field (smaller = zoomed in).
ringCount number 6 Number of concentric rings.
spokeCount number 12 Number of radial spokes.
ringThickness number — Thickness of each ring.
spokeThickness number — Thickness of each spoke.
sweepSpeed number — Angular speed of the sweeping beam.
sweepWidth number — Width of the sweep beam lobe.
sweepLobes number — Number of sweep lobes.
color string '#3ef09a' Primary color of the radar (hex).
backgroundColor string 'transparent' Background color (hex).
falloff number — Edge falloff exponent.
brightness number — Overall brightness.
enableMouseInteraction boolean — Whether the field shifts toward the pointer.
mouseInfluence number — Strength of the pointer shift.

使用示例 / Usage

<script setup lang="ts">
import { Radar } from 'vue3-bits'
</script>

<template>
  <div style="position: relative; height: 340px">
    <Radar
      :speed="1"
      :scale="0.5"
      :ring-count="10"
      :spoke-count="10"
      color="#9f29ff"
      background-color="#000000"
    />
  </div>
</template>

SoftAurora

ogl 极光着色器背景

引入 / Import

import { SoftAurora } from 'vue3-bits'

Props

属性 类型 默认值 说明
speed number — Animation speed multiplier.
scale number — Scale of the noise sampling field.
brightness number — Overall brightness.
color1 string — First aurora color (hex).
color2 string — Second aurora color (hex).
noiseFrequency number — Frequency of the Perlin noise sampling.
noiseAmplitude number — Amplitude of the Perlin noise sampling.
bandHeight number — Vertical position of the aurora band (0..1).
bandSpread number — Spread / sharpness of the aurora band.
octaveDecay number — Per-octave amplitude decay (fractal noise).
layerOffset number — Phase offset of the second aurora layer.
colorSpeed number — Speed at which the color gradient scrolls.
enableMouseInteraction boolean — Whether the field shifts toward the pointer.
mouseInfluence number — Strength of the pointer shift.

使用示例 / Usage

<script setup lang="ts">
import { SoftAurora } from 'vue3-bits'
</script>

<template>
  <div style="position: relative; height: 340px">
    <SoftAurora
      :speed="0.6"
      :scale="1.5"
      color1="#f7f7f7"
      color2="#e100ff"
    />
  </div>
</template>

Plasma

ogl 等离子着色器背景

引入 / Import

import { Plasma } from 'vue3-bits'

Props

属性 类型 默认值 说明
color string '#a6a3b8' Tint color applied to the plasma (hex).
speed number — Animation speed multiplier.
direction PlasmaDirection — Flow direction: forward / reverse / pingpong.
scale number — Zoom / scale of the plasma field.
opacity number — Output opacity.
mouseInteractive boolean — Whether the field reacts to the pointer.

使用示例 / Usage

<script setup lang="ts">
import { Plasma } from 'vue3-bits'
</script>

<template>
  <div style="position: relative; height: 340px">
    <Plasma
      color="#ffffff"
      :speed="1"
      direction="forward"
      :scale="1"
      :opacity="1"
    />
  </div>
</template>

Particles

ogl 粒子背景

引入 / Import

import { Particles } from 'vue3-bits'

Props

属性 类型 默认值 说明
particleCount number — Number of particles.
particleSpread number — Spread multiplier of the unit-sphere positions.
speed number — Animation speed.
particleColors string[] — Palette of particle colors (hex strings). Falls back to white.
moveParticlesOnHover boolean true Whether particles drift toward the pointer on hover.
particleHoverFactor number — How far the whole system shifts on pointer move.
alphaParticles boolean — Use soft alpha (circular) particles instead of hard squares.
particleBaseSize number — Base point size.
sizeRandomness number — Per-particle size jitter (0 = uniform).
cameraDistance number — Distance of the camera along Z.
disableRotation boolean — Disable the idle rotation of the whole cloud.
pixelRatio number — Device pixel ratio used by the renderer.
className string — Extra CSS class applied to the container element.

使用示例 / Usage

<script setup lang="ts">
import { Particles } from 'vue3-bits'
</script>

<template>
  <!-- wrap in a sized element; the canvas fills its parent -->
  <div style="position: relative; height: 340px">
    <Particles
      :particle-count="200"
      :particle-spread="10"
      :speed="0.1"
      :particle-base-size="100"
      :alpha-particles="false"
      :disable-rotation="false"
      :pixel-ratio="1"
    />
  </div>
</template>

GradientBlinds

ogl 渐变百叶背景

引入 / Import

import { GradientBlinds } from 'vue3-bits'

Props

属性 类型 默认值 说明
className string — Extra CSS class applied to the container element.
dpr number — Device pixel ratio (falls back to window.devicePixelRatio).
paused boolean — Freeze the animation (the last rendered frame stays on screen).
gradientColors string[] — Gradient colour stops (hex strings); 1..8 entries, padded/truncated to 8.
angle number — Gradient rotation in degrees.
noise number — Amount of per-pixel noise added to the output.
blindCount number — Number of blinds (capped by blindMinWidth when that would make them wider).
blindMinWidth number — Minimum blind width in px; caps blindCount so blinds stay at least this wide.
mouseDampening number — Pointer-follow smoothing time constant (0 = instant follow).
mirrorGradient boolean — Mirror the gradient across the vertical centre.
spotlightRadius number — Radius of the soft spotlight that follows the pointer (fraction of size).
spotlightSoftness number — Softness exponent of the spotlight falloff.
spotlightOpacity number — Opacity of the spotlight highlight.
distortAmount number — Amount of UV distortion wobble.
shineDirection ShineDirection — Which side the blind stripes are lit from.
mixBlendMode string — CSS mix-blend-mode applied to the container.

使用示例 / Usage

<script setup lang="ts">
import { GradientBlinds } from 'vue3-bits'
</script>

<template>
  <div style="position: relative; height: 600px">
    <GradientBlinds
      :gradient-colors="['#FF9FFC', '#5227FF']"
      :angle="20"
      :noise="0.5"
      :blind-count="16"
      :spotlight-radius="0.5"
      :shine-direction="'left'"
      mix-blend-mode="lighten"
    />
  </div>
</template>

GridScan

three 网格扫描背景

引入 / Import

import { GridScan } from 'vue3-bits'

Props

属性 类型 默认值 说明
enableWebcam boolean — Enable webcam face tracking (dropped in this port — no face-api dep).
showPreview boolean — Show the (unused) webcam preview overlay.
modelsPath string — face-api model path (ignored in this port).
sensitivity number — Pointer responsiveness (0..1).
lineThickness number — Grid line thickness.
linesColor string '#4d4757' Grid line color (hex).
gridScale number — Grid scale (cell size).
lineStyle GridScanLineStyle — Line style.
lineJitter number — Per-line jitter amount (0..1).
enablePost boolean — Enable the three-native post chain (bloom + chromatic aberration).
bloomIntensity number — Bloom strength.
bloomThreshold number — Bloom luminance threshold.
bloomSmoothing number — Bloom luminance smoothing.
chromaticAberration number — Chromatic aberration offset.
noiseIntensity number — Noise amount applied to the grid.
scanColor string '#7dd3fc' Scan pulse color (hex).
scanOpacity number — Scan pulse opacity.
scanDirection GridScanScanDirection 'forward' Scan direction.
scanSoftness number — Scan softness.
scanGlow number — Scan glow.
scanPhaseTaper number — Scan phase taper.
scanDuration number 2.4 Scan cycle duration (s).
scanDelay number 1.6 Scan delay before each cycle (s).
enableGyro boolean — Enable gyroscope (device orientation) input.
scanOnClick boolean — Push a scan pulse on click.
snapBackDelay number — Delay (ms) before the camera snaps back to center on pointer leave.
className string — Extra CSS class applied to the container element.
style Record<string, string> — Inline style object (mirrors the style prop).

使用示例 / Usage

<script setup lang="ts">
import { GridScan } from 'vue3-bits'
</script>

<template>
  <div style="position: relative; height: 600px">
    <GridScan
      :sensitivity="0.55"
      :line-thickness="1"
      :grid-scale="0.1"
      :line-style="'solid'"
      :scan-color="'#FF9FFC'"
      :scan-opacity="0.4"
      :scan-direction="'pingpong'"
      :enable-post="true"
    />
  </div>
</template>

Lightning

原生 WebGL 闪电背景

引入 / Import

import { Lightning } from 'vue3-bits'

Props

属性 类型 默认值 说明
hue number — Base color hue of the beam, in degrees (0–360).
xOffset number — Horizontal offset applied to the beam field.
speed number — Animation speed multiplier.
intensity number — Brightness / glow intensity of the beam.
size number — Noise distortion size of the beam field.
className string — Extra CSS class applied to the container element.

使用示例 / Usage

<script setup lang="ts">
import { Lightning } from 'vue3-bits'
</script>

<template>
  <div style="position: relative; height: 600px">
    <Lightning
      :hue="230"
      :x-offset="0"
      :speed="1"
      :intensity="1"
      :size="1"
    />
  </div>
</template>

Galaxy

ogl 星系背景

引入 / Import

import { Galaxy } from 'vue3-bits'

Props

属性 类型 默认值 说明
focal [number, number] — Focal point of the projection, in [x, y] normalized coords.
rotation [number, number] — Rotation applied to the UVs, in [x, y].
starSpeed number — Star flow speed.
density number — Star field density.
hueShift number — Hue shift in degrees.
disableAnimation boolean — Freeze the animation.
speed number — Overall animation speed.
mouseInteraction boolean — Enable mouse interaction (move / leave listeners).
glowIntensity number — Glow intensity of the stars.
saturation number — Color saturation.
mouseRepulsion boolean — Whether stars are repelled by the mouse.
twinkleIntensity number — Twinkle intensity.
rotationSpeed number — Idle auto-rotation speed.
repulsionStrength number — Strength of the mouse repulsion.
autoCenterRepulsion number — Constant repulsion from the center (0 = off).
transparent boolean — Transparent background (alpha) vs. opaque black.
className string — Extra CSS class applied to the container element.

使用示例 / Usage

<script setup lang="ts">
import { Galaxy } from 'vue3-bits'
</script>

<template>
  <div style="position: relative; height: 340px">
    <Galaxy
      :mouse-repulsion="true"
      :mouse-interaction="true"
      :density="1"
      :glow-intensity="0.3"
      :saturation="0"
      :hue-shift="140"
      :twinkle-intensity="0.3"
      :rotation-speed="0.1"
      :repulsion-strength="2"
      :auto-center-repulsion="0"
      :star-speed="0.5"
      :speed="1"
    />
  </div>
</template>

DotField

Canvas 点阵背景

引入 / Import

import { DotField } from 'vue3-bits'

Props

属性 类型 默认值 说明
dotRadius number — Radius of each dot in px.
dotSpacing number — Spacing between dots in px.
cursorRadius number 240 Radius (px) of the cursor influence field.
cursorForce number — How strongly the cursor pushes dots when not in bulge-only mode.
bulgeOnly boolean — When true dots only bulge toward the cursor; otherwise they drift.
bulgeStrength number 0.6 Strength of the bulge displacement.
glowRadius number — Radius of the soft SVG glow that follows the pointer.
sparkle boolean — Randomly enlarge a few dots each frame for a sparkle effect.
waveAmplitude number — Amplitude of the idle sine-wave drift (0 = none).
gradientFrom string — Gradient start color for the dot field.
gradientTo string — Gradient end color for the dot field.
glowColor string '#ffffff' Color of the radial cursor glow.
className string — Extra CSS class applied to the container element.

使用示例 / Usage

<script setup lang="ts">
import { DotField } from 'vue3-bits'
</script>

<template>
  <div style="position: relative; width: 100%; height: 600px">
    <DotField
      :dot-radius="1.5"
      :dot-spacing="14"
      :bulge-strength="67"
      :glow-radius="160"
      :cursor-radius="500"
      :cursor-force="0.1"
      bulge-only
      gradient-from="#A855F7"
      gradient-to="#B497CF"
      glow-color="#120F17"
    />
  </div>
</template>

DotGrid

Canvas 点阵网格

引入 / Import

import { DotGrid } from 'vue3-bits'

Props

属性 类型 默认值 说明
dotSize number 5 Diameter of each dot in px.
gap number 18 Gap between dots in px.
baseColor string '#3a3446' Resting dot color (hex).
activeColor string '#ffffff' Color of dots near the pointer (hex).
proximity number 140 Distance (px) within which dots light up near the pointer.
speedTrigger number — Pointer speed (px/s) required to trigger an inertia push.
shockRadius number 320 Radius (px) of the click shockwave.
shockStrength number — Strength of the click shockwave push.
maxSpeed number — Maximum pointer speed (px/s) clamp.
resistance number — Inertia resistance proxy (higher = snappier push).
returnDuration number 0.8 Duration (s) of the elastic return to rest.
className string — Extra CSS class applied to the root element.
style Record<string, string> — Inline style merged onto the root element.

使用示例 / Usage

<script setup lang="ts">
import { DotGrid } from 'vue3-bits'
</script>

<template>
  <div style="position: relative; width: 100%; height: 600px">
    <DotGrid
      :dot-size="5"
      :gap="15"
      base-color="#2F293A"
      active-color="#5227FF"
      :proximity="120"
      :shock-radius="250"
      :shock-strength="5"
      :resistance="750"
      :return-duration="1.5"
    />
  </div>
</template>

Hyperspeed

three 超光速隧道背景

引入 / Import

import { Hyperspeed } from 'vue3-bits'

Props

属性 类型 默认值 说明
effectOptions Partial<HyperspeedOptions> — Partial override of the engine options (merged onto defaults).
className string — Extra CSS class applied to the container element.

使用示例 / Usage

<script setup lang="ts">
import { Hyperspeed } from 'vue3-bits'
</script>

<template>
  <div style="position: relative; height: 600px">
    <Hyperspeed
      :effect-options="{
        distortion: 'turbulentDistortion',
        length: 400,
        roadWidth: 10,
        lanesPerRoad: 4,
        speedUp: 2,
        colors: {
          roadColor: 0x080808,
          islandColor: 0x0a0a0a,
          background: 0x000000,
          shoulderLines: 0xffffff,
          brokenLines: 0xffffff,
          leftCars: [0xd856bf, 0x6750a2, 0xc247ac],
          rightCars: [0x03b3c3, 0x0e5ea5, 0x324555],
          sticks: 0x03b3c3
        }
      }"
    />
  </div>
</template>

Waves

Canvas 波浪背景

引入 / Import

import { Waves } from 'vue3-bits'

Props

属性 类型 默认值 说明
lineColor string '#ffffff' Stroke color of the wave lines.
backgroundColor string — Canvas background color (any CSS color).
waveSpeedX number — Horizontal noise scroll speed.
waveSpeedY number — Vertical noise scroll speed.
waveAmpX number — Horizontal wave amplitude.
waveAmpY number — Vertical wave amplitude.
xGap number — Horizontal gap between lines.
yGap number — Vertical gap between points.
friction number — Cursor velocity friction (0..1).
tension number — Spring tension pulling points back to rest.
maxCursorMove number — Max cursor displacement (px).
className string — Extra CSS class applied to the root element.
style Record<string, string> — Inline style merged onto the root element.

使用示例 / Usage

<script setup lang="ts">
import { Waves } from 'vue3-bits'
</script>

<template>
  <div style="position: relative; width: 100%; height: 600px">
    <Waves
      line-color="#ffffff"
      :wave-speed-x="0.0125"
      :wave-speed-y="0.01"
      :wave-amp-x="40"
      :wave-amp-y="20"
      :friction="0.9"
      :tension="0.01"
      :max-cursor-move="120"
      :x-gap="12"
      :y-gap="36"
    />
  </div>
</template>

Ballpit

ogl 弹球背景

引入 / Import

import { Ballpit } from 'vue3-bits'

Props

属性 类型 默认值 说明
className string — Extra CSS class applied to the canvas.
followCursor boolean — Whether the first sphere tracks the pointer (default: true).
count number — Number of balls.
gravity number — Downward acceleration per second.
friction number — Velocity retained per frame (0..1, closer to 1 = less drag).
wallBounce number — Energy kept after a wall hit.
ambientColor number — Ambient light color (hex int).
ambientIntensity number — Ambient light intensity.
lightIntensity number 1 Point light intensity.
colors number[] — Palette of ball colors (hex ints).
maxX number — Bounds of the simulation box (X/Y/Z half-extents).
maxY number — —
maxZ number — —
minSize number — Min / max per-ball radius.
maxSize number — —
size0 number — Radius of the controlled (index 0) sphere.
maxVelocity number — Velocity clamp.
materialParams Record<string, unknown> — MeshPhysicalMaterial overrides.
controlSphere0 boolean — Whether the index-0 sphere is pointer-controlled.

使用示例 / Usage

<script setup lang="ts">
import { Ballpit } from 'vue3-bits'
</script>

<template>
  <div style="position: relative; overflow: hidden; height: 500px; width: 100%">
    <Ballpit
      :count="100"
      :gravity="0.01"
      :friction="0.9975"
      :wall-bounce="0.95"
      :follow-cursor="false"
    />
  </div>
</template>

Orb

ogl 光球背景

引入 / Import

import { Orb } from 'vue3-bits'

Props

属性 类型 默认值 说明
hue number — Hue rotation applied to the base colors (degrees).
hoverIntensity number 1 Strength of the wobble applied when hovered.
rotateOnHover boolean — Rotate the orb while hovered.
forceHoverState boolean — Force the hover state on regardless of the pointer.
backgroundColor string — Background color behind the orb (hex / rgb / hsl).
className string — Extra CSS class applied to the container element.

使用示例 / Usage

<script setup lang="ts">
import { Orb } from 'vue3-bits'
</script>

<template>
  <div style="position: relative; height: 340px">
    <Orb
      :hue="0"
      :hover-intensity="0.2"
      :rotate-on-hover="true"
      :force-hover-state="false"
      background-color="#000000"
    />
  </div>
</template>

ShapeGrid

Canvas 形状网格

引入 / Import

import { ShapeGrid } from 'vue3-bits'

Props

属性 类型 默认值 说明
direction ShapeGridDirection 'diagonal' Scroll direction of the animated grid.
speed number 0.5 Scroll speed (minimum clamped to 0.1).
borderColor string — Stroke color of each cell (any CanvasStrokeStyle).
squareSize number — Size of each cell in px.
hoverFillColor string — Fill color of hovered cells.
shape ShapeGridShape — Cell shape.
hoverTrailAmount number — Number of trailing hovered shapes to keep lit (0 = no trail).
className string — Extra CSS class applied to the canvas element.

使用示例 / Usage

<script setup lang="ts">
import { ShapeGrid } from 'vue3-bits'
</script>

<template>
  <div style="position: relative; width: 100%; height: 600px">
    <ShapeGrid
      :speed="0.1"
      :square-size="40"
      direction="diagonal"
      border-color="#5408df"
      hover-fill-color="#222"
      shape="square"
      :hover-trail-amount="2"
    />
  </div>
</template>

GridDistortion

ogl 网格扭曲图像背景

引入 / Import

import { GridDistortion } from 'vue3-bits'

Props

属性 类型 默认值 说明
grid number 15 Number of grid subdivisions per axis. The plane mesh is segmented into (grid - 1) × (grid - 1) cells, so a higher valu…
mouse number 0.1 Mouse influence radius, expressed as a fraction of the grid. A larger value lets the pointer distort a wider neighbourho…
strength number 0.15 Distortion strength applied by mouse velocity. Higher values push the UVs further, producing a stronger "ripple" as the…
relaxation number 0.9 Per-frame relaxation of the distortion field back to rest (0..1). Closer to 1 means the field lingers longer before se…
imageSrc string — Source URL of the image rendered through the distorted mesh.
className string '' Extra CSS class appended to the root container element.

使用示例 / Usage

<script setup lang="ts">
import { GridDistortion } from 'vue3-bits'
</script>

<template>
  <div style="position: relative; width: 100%; height: 600px">
    <GridDistortion
      image-src="https://picsum.photos/1920/1080?grayscale"
      :grid="15"
      :mouse="0.1"
      :strength="0.15"
      :relaxation="0.9"
    />
  </div>
</template>

CursorGrid

鼠标光晕网格背景

引入 / Import

import { CursorGrid } from 'vue3-bits'

Props

属性 类型 默认值 说明
cellSize number 70 Grid cell size in px (distance between lattice lines).
color string '#D946EF' Accent color of the lit cells (any CSS hex).
radius number 140 Pointer influence radius in px.
falloff Falloff 'smooth' Distance→brightness curve applied to cells inside radius.
holdTime number 400 How long (ms) a lit cell stays at full brightness before it starts fading.
fadeDuration number 800 Fade-out duration (ms) once holdTime has elapsed.
lineWidth number 1.2 Stroke line width of each lit cell.
maxOpacity number 1 Peak opacity of a fully lit cell.
fillOpacity number 0 Multiplier applied to the stroke opacity for the cell fill (0 = no fill).
gridOpacity number 0 Opacity of the static background lattice (0 = hidden).
cellRadius number 0 Corner radius (px) of each cell rectangle (0 = sharp corners).
clickPulse boolean true Emit an expanding ring pulse on pointer down.
pulseSpeed number 600 Expansion speed (px/s) of click pulses.
className string '' Extra CSS class appended to the root element.

使用示例 / Usage

<script setup lang="ts">
import { CursorGrid } from 'vue3-bits'
</script>

<template>
  <CursorGrid
    :cell-size="70"
    :radius="140"
    falloff="smooth"
    :hold-time="400"
    :fade-duration="800"
    :click-pulse="true"
    color="#D946EF"
  />
</template>

OrbitImages

轨道环绕图片

引入 / Import

import { OrbitImages } from 'vue3-bits'

Props

属性 类型 默认值 说明
images string[] — Image URLs to orbit.
altPrefix string 'Orbiting image' Prefix for each image's generated alt text.
shape OrbitShape 'ellipse' Path shape the images travel along.
customPath string '' Custom SVG path d string (used when shape === 'custom').
baseWidth number 1400 Design-space width/height of the orbit canvas (coordinate system for the path).
radiusX number 700 Ellipse / rectangle / infinity / wave horizontal radius (design px).
radiusY number 170 Ellipse / rectangle / infinity / wave vertical radius (design px).
radius number 300 Fallback radius for circle / square / triangle / star / heart (design px).
starPoints number 5 Number of points for the star shape.
starInnerRatio number 0.5 Inner/outer radius ratio for the star shape (0..1).
rotation number -8 Whole-orbit rotation in degrees (tilts the path).
duration number 40 Seconds for one full orbit.
itemSize number 64 Size (px) of each orbiting item.
direction 'normal' | 'reverse' 'normal' Orbit direction.
fill boolean true Distribute items evenly along the whole path (vs. all placed at 0%).
width number | '100%' 100 Container width: number (px) or '100%'.
height number | 'auto' 100 Container height: number (px) or 'auto'.
className string '' Extra CSS class appended to the container.
showPath boolean false Render the travel path as an SVG overlay.
pathColor string 'rgba(0,0,0,0.1)' Stroke color of the path overlay.
pathWidth number 2 Stroke width of the path overlay (design px).
easing 'linear' | 'easeIn' | 'easeOut' | 'easeInOut' 'linear' Timing function for the orbit motion.
paused boolean false Pause the orbit animation.
centerContent string '' Content rendered at the orbit center. Supplied as a string for convenience; richer (VNode) content can be passed through…
responsive boolean false Scale the design space to fit the container width (responsive).

使用示例 / Usage

<script setup lang="ts">
import { OrbitImages } from 'vue3-bits'
</script>

<template>
  <OrbitImages
    :images="images"
    shape="ellipse"
    :radius-x="340"
    :radius-y="80"
    :rotation="-8"
    :duration="30"
    :item-size="80"
    responsive
    show-path
  />
</template>

Antigravity

反重力粒子环

引入 / Import

import { Antigravity } from 'vue3-bits'

Props

属性 类型 默认值 说明
count number — Number of instanced particles.
magnetRadius number — Pointer attraction radius — only particles inside it form the ring.
ringRadius number — Base radius of the ring particles are arranged on.
waveSpeed number — Speed of the sine wave travelling around the ring.
waveAmplitude number — Amplitude of the ring wave.
particleSize number — Base size of every particle (scaled by proximity + pulse).
lerpSpeed number — Position easing per frame (smaller = softer follow).
color string — Particle color (any CSS color string).
autoAnimate boolean — When the pointer is idle > 2s, the target auto-roams along a Lissajous path.
particleVariance number — Randomness applied to the per-particle pulse scale.
rotationSpeed number — Global rotation speed of the ring around the pointer.
depthFactor number — Z-axis depth scaling of the particles.
pulseSpeed number — Speed of the per-particle pulse scaling.
particleShape 'capsule' | 'sphere' | 'box' | 'tetrahedron' — Geometry shape of each instanced particle.
fieldStrength number — Strength of the per-particle radial deviation (perturbation).

使用示例 / Usage

<script setup lang="ts">
import { Antigravity } from 'vue3-bits'
</script>

<template>
  <!-- Antigravity is a WebGL canvas: give its container an explicit size -->
  <div style="width: 100%; height: 400px; position: relative">
    <Antigravity
      :count="300"
      :magnet-radius="6"
      :ring-radius="7"
      :wave-speed="0.4"
      :wave-amplitude="1"
      :particle-size="1.5"
      :lerp-speed="0.05"
      color="#5227FF"
      auto-animate
      :particle-variance="1"
      :rotation-speed="0"
      :depth-factor="1"
      :pulse-speed="3"
      particle-shape="capsule"
      :field-strength="10"
    />
  </div>
</template>

LogoLoop

无限 Logo 跑马灯

引入 / Import

import { LogoLoop } from 'vue3-bits'

Props

属性 类型 默认值 说明
logos LogoItem[] — The list of logos to render and scroll.
speed number 120 Scroll speed in px/s (sign flips direction; magnitude is the speed).
direction 'left' | 'right' | 'up' | 'down' 'left' Scroll direction: left | right | up | down.
width number | string '100%' Container width (number → px, or any CSS length string).
logoHeight number 28 Rendered logo height in px (images are auto-scaled to this height).
gap number 32 Gap between logos in px.
pauseOnHover boolean — Slow to hoverSpeed (or stop) while the pointer is over the marquee.
hoverSpeed number — Velocity (px/s) the marquee eases to while hovered.
fadeOut boolean false Draw a gradient fade mask at the edges.
fadeOutColor string — Color of the fade mask (defaults to white / dark-aware auto color).
scaleOnHover boolean false Scale each logo up on hover.
renderItem (item: LogoItem, key: string) => VNode — Headless custom renderer (item, key) =&gt; VNode. Kept for 1:1 contract fidelity; the scoped #item slot takes precedenc…
ariaLabel string 'Partner logos' Accessibility label for the marquee region.
className string — Extra CSS class appended to the root element.
style CSSProperties — Inline CSS style merged onto the root element.

使用示例 / Usage

<script setup lang="ts">
import { LogoLoop } from 'vue3-bits'

const logos = [
  { title: 'React', href: 'https://react.dev' },
  { title: 'Vue', href: 'https://vuejs.org' },
  { title: 'TypeScript', href: 'https://www.typescriptlang.org' },
]
</script>

<template>
  <LogoLoop
    :logos="logos"
    :speed="120"
    direction="left"
    :logo-height="28"
    :gap="32"
    :fade-out="true"
    fade-out-color="#ffffff"
    :scale-on-hover="true"
    aria-label="Technology partners"
  >
    <template #item="{ item }">
      <span class="logo-chip">{{ item.title }}</span>
    </template>
  </LogoLoop>
</template>

ShapeBlur

形状边缘模糊背景

引入 / Import

import { ShapeBlur } from 'vue3-bits'

Props

属性 类型 默认值 说明
className string '' Extra CSS class appended to the root element.
variation number 0 Which shape variant the shader draws: - 0 → rounded rectangle outline (stroke) - 1 → filled circle - 2 → circle ou…
pixelRatioProp number 2 Pixel-ratio hint handed to the shader. On resize it is overridden by min(window.devicePixelRatio, 2), so this mainly…
shapeSize number 1.2 Size of the base shape (rectangle half-extent / circle radius scale).
roundness number 0.2 Corner roundness of the rectangle (only affects variation = 0).
borderSize number 0.05 Stroke width of the shape outline.
circleSize number 0.3 Radius of the mask circle that defines the blurred edge.
circleEdge number 0.5 Softness (anti-aliased width) of the mask circle edge.
style CSSProperties — Inline style object merged onto the root element.

使用示例 / Usage

<script setup lang="ts">
import ShapeBlur from 'vue3-bits'
</script>

<template>
  <div style="position: relative; height: 500px; overflow: hidden">
    <ShapeBlur
      :variation="0"
      :pixel-ratio-prop="window.devicePixelRatio || 1"
      :shape-size="1"
      :roundness="0.5"
      :border-size="0.05"
      :circle-size="0.25"
      :circle-edge="1"
    />
  </div>
</template>

ImageTrail

图片跟随拖尾

引入 / Import

import { ImageTrail } from 'vue3-bits'

Props

属性 类型 默认值 说明
items string[] — Image URL list; each tile follows the pointer in order and loops around.
variant number 1 Animation variant (1–8). Selects one of the eight ImageTrailVariantN engines.
className string '' Extra CSS class appended to the root element.
style CSSProperties — Inline styles merged onto the root element.

使用示例 / Usage

<script setup lang="ts">
import { ImageTrail } from 'vue3-bits'
</script>

<template>
  <div style="height: 500px; position: relative; overflow: hidden">
    <ImageTrail
      :items="[
        'https://picsum.photos/id/287/300/300',
        'https://picsum.photos/id/1001/300/300',
        // ...
      ]"
      :variant="1"
    />
  </div>
</template>

Ribbons

着色器丝带背景

引入 / Import

import { Ribbons } from 'vue3-bits'

Props

属性 类型 默认值 说明
colors string[] — Per-ribbon colors (any CSS color string). One ribbon is spawned per entry.
baseSpring number 0.03 Spring stiffness — how hard each ribbon's head is pulled toward the pointer.
baseFriction number 0.9 Velocity damping; smaller = the head stops faster. A little jitter is added per ribbon.
baseThickness number 30 Base ribbon thickness in (CSS) pixels. A little jitter is added per ribbon.
offsetFactor number 0.05 Horizontal offset spread between ribbons (NDC units).
maxAge number 500 Trail lifetime in ms — larger = longer tail. 0 / non-finite = instant follow.
pointCount number 50 Sample points per ribbon — more = smoother curve.
speedMultiplier number 0.6 How quickly the trailing points chase the head (per-frame follow speed).
enableFade boolean false Fade the ribbon out toward its tail (alpha → 0 at the last point).
enableShaderEffect boolean false Add a sine wave displacement to the ribbon in the vertex shader.
effectAmplitude number 2 Amplitude of the shader wave displacement (only used when enableShaderEffect).
backgroundColor [number, number, number, number] — Clear-color [r, g, b, a] in 0–1 floats. [0,0,0,0] = transparent.
className string — Extra CSS class appended to the root element.
style CSSProperties — Inline style merged onto the root element.

使用示例 / Usage

<script setup lang="ts">
import { Ribbons } from 'vue3-bits'
</script>

<template>
  <div style="height: 500px; position: relative; overflow: hidden">
    <Ribbons
      :colors="['#5227FF']"
      :base-thickness="30"
      :speed-multiplier="0.5"
      :max-age="500"
      :enable-fade="false"
      :enable-shader-effect="false"
    />
  </div>
</template>

MetaBalls

融合球背景

引入 / Import

import { MetaBalls } from 'vue3-bits'

Props

属性 类型 默认值 说明
color string '#ffffff' Base color of the orbiting metaballs (raw sRGB hex, fed 1:1 into the shader).
cursorBallColor string '#ffffff' Color of the interactive cursor metaball.
cursorBallSize number 3 Radius of the cursor metaball in shader space.
ballCount number 15 Number of orbiting metaballs (clamped to 50 internally).
animationSize number 30 Scale factor mapping pixels → shader coordinate space (smaller = larger balls).
enableMouseInteraction boolean true Let the pointer drive the cursor metaball; when false it idles on an orbit.
enableTransparency boolean false Render on a transparent background (edges fade out) instead of opaque black.
hoverSmoothness number 0.05 Lerp factor (0..1) for the cursor metaball easing toward its target.
clumpFactor number 1 Multiplier on each ball's orbit radius (higher = tighter clump).
speed number 0.3 Animation speed multiplier.
className string '' Extra CSS class appended to the root element.
style CSSProperties — Inline style object merged onto the root element.

使用示例 / Usage

<script setup lang="ts">
import { MetaBalls } from 'vue3-bits'
</script>

<template>
  <div style="width: 600px; height: 400px; position: relative;">
    <MetaBalls
      color="#ffffff"
      cursor-ball-color="#ffffff"
      :cursor-ball-size="2"
      :ball-count="15"
      :animation-size="30"
      enable-mouse-interaction
      enable-transparency
      :hover-smoothness="0.15"
      :clump-factor="1"
      :speed="0.3"
    />
  </div>
</template>

FlyingPosters

three 飞行海报背景

引入 / Import

import { FlyingPosters } from 'vue3-bits'

Props

属性 类型 默认值 说明
items string[] — Poster image URLs (one plane per entry). The demo feeds inline SVG data URIs so it works fully offline — no external net…
planeWidth number 320 Poster plane width as a fraction of the screen (viewport.width * planeWidth / screen.width).
planeHeight number 320 Poster plane height as a fraction of the screen (viewport.height * planeHeight / screen.height).
distortion number 3 Distortion strength applied to each poster as it flies (drives the vertex-shader rotation).
scrollEase number 0.01 Scroll easing factor (0–1) — how quickly current chases target.
cameraFov number 45 Perspective camera field of view (degrees).
cameraZ number 20 Perspective camera distance from the z=0 plane.
autoScroll boolean false When true, the column auto-drifts without user input (handy for demos / QA). Default false keeps source behaviour.
className string '' Extra CSS class appended to the root element.
style CSSProperties — Inline style merged onto the root element.

使用示例 / Usage

<script setup lang="ts">
import { FlyingPosters } from 'vue3-bits'
</script>

<template>
  <div style="height: 600px; position: relative; overflow: hidden">
    <FlyingPosters
      :items="items"
      :plane-width="390"
      :plane-height="320"
      :distortion="3"
      :scroll-ease="0.01"
      :camera-fov="45"
      :camera-z="20"
    />
  </div>
</template>

FluxLines

ogl 流动光线背景

引入 / Import

import { FluxLines } from 'vue3-bits'

Props

属性 类型 默认值 说明
colors string[] ['#ffffff', '#ffffff', '#ffffff'] Palette stops (up to 8) that colour the lines.
speed number 0.5 Time multiplier of the flow.
scale number 1.6 Zoom of the noise domain.
turbulence number 1 Amount of turbulent distortion added to the fields.
fluidity number 0.1 Smooth-min blend radius — higher blends the two fields more.
rimWidth number 0.2 Wid

Related Packages

hopla

3D model viewer plugin for Vue3 based on 3Dhop (3dhop.net)

246
jr3d-vue2

3D Model Viewer for Vue 2

5,443
spline-vue

Vue2/Vue3 component for Spline scenes.

4,876 8
wz-cesium-v3

飞行与3d地图整合,支持react和vue3

4,868
@billtaofbj/explosion-3d

Explosion 3D editor component

3,137

Version History

Version Released Vue License
0.3.0 ^3.4.0
0.2.0 ^3.4.0
0.1.8 ^3.4.0
0.1.7 ^3.4.0
0.1.6 ^3.4.0