Noise .mv-noise

Filmkorn in reinem CSS (SVG-feTurbulence-Textur als Data-URI) auf jeder Fläche: fein oder grob, statisch oder animiert, unter oder über dem Inhalt.

KategorieEffekte
TypNur CSS (.mv-noise)
Statusstabil
Keywordsnoise, grain, texture, film, overlay, gradient

When to use

  • A flat gradient hero or card looks too digital and needs a subtle film-grain texture
  • Banding must be hidden on large, smooth gradient areas
  • A retro or editorial look needs coarse or flickering grain laid over the whole content

Avoid when

  • High-opacity grain would sit over small or long body text and hurt legibility

Installation

node scripts/add.mjs noise --out ./src/marvelous

KI-Agent mit dem MCP-Server von Marvelous UI: install_components({ slugs: ["noise"], target_dir: "<absolute path>/src/marvelous", framework: "react" }).

Kopierte Dateien (inklusive Abhängigkeiten): tokens/tokens.css, core/base.css, components/noise/noise.css.

Verwendung

Referenz-Markup zum Starten und Anpassen mit Attributen, data-* und CSS-Variablen:

<div style="display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,15rem),1fr));gap:1.25rem;width:100%;max-width:60rem;margin:auto">
  <div style="display:grid;gap:.5rem">
    <div style="display:grid;align-content:end;min-height:13rem;padding:1.25rem;border-radius:var(--mv-radius-xl);color:white;background:linear-gradient(150deg,oklch(0.6 0.2 285),oklch(0.55 0.22 330) 55%,oklch(0.78 0.15 60))">
      <strong style="font-size:var(--mv-text-lg)">No grain</strong>
      <span style="font-size:var(--mv-text-sm);opacity:.85">Smooth gradient, visible banding.</span>
    </div>
  </div>
  <div class="mv-noise" style="display:grid;align-content:end;min-height:13rem;padding:1.25rem;border-radius:var(--mv-radius-xl);color:white;background:linear-gradient(150deg,oklch(0.6 0.2 285),oklch(0.55 0.22 330) 55%,oklch(0.78 0.15 60))">
    <strong style="font-size:var(--mv-text-lg)">Fine grain</strong>
    <span style="font-size:var(--mv-text-sm);opacity:.85">.mv-noise: texture beneath the content.</span>
  </div>
  <div class="mv-noise" data-grain="coarse" data-animate style="display:grid;align-content:end;min-height:13rem;padding:1.25rem;border-radius:var(--mv-radius-xl);color:white;background:radial-gradient(80% 70% at 20% 10%,oklch(0.7 0.16 200),transparent 70%),linear-gradient(200deg,oklch(0.35 0.12 265),oklch(0.2 0.06 280));--mv-noise-opacity:.3">
    <strong style="font-size:var(--mv-text-lg)">Animated grain</strong>
    <span style="font-size:var(--mv-text-sm);opacity:.85">data-grain="coarse" data-animate</span>
  </div>
  <article class="mv-card mv-noise" style="grid-column:1/-1;flex-direction:row;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:1rem;padding:1.5rem;background:radial-gradient(120% 140% at 100% 0%,var(--mv-accent-subtle),transparent 60%),var(--mv-surface);--mv-noise-opacity:.35;--mv-noise-blend:soft-light">
    <div>
      <h3 style="margin:0;font-size:var(--mv-text-xl);letter-spacing:-.01em">The product team magazine</h3>
      <p style="margin:.35rem 0 0;font-size:var(--mv-text-sm);color:var(--mv-fg-muted)">One issue a month, zero spam. Join 12,000 readers.</p>
    </div>
    <button class="mv-button" data-size="lg">Subscribe</button>
  </article>
</div>

API

Attributes

NameTypDefaultDescription
data-graincoarse(fine)Larger, higher-contrast grain.
data-animatebooleanFlickering grain (~12 fps, frozen under reduced motion).
data-layeroverGrain above all the content (overlay texture).

CSS classes

NameDescription
mv-noiseAdd it to the surface (gradient, hero, card); the grain is painted in ::after between the background and the content. Makes the element positioned and isolated.

CSS variables

NameDefaultDescription
--mv-noise-opacity0.22Intensity.
--mv-noise-blendoverlayBlend mode (soft-light is subtler, multiply on light backgrounds…).
--mv-noise-size200pxTile size.
--mv-noise-speed0.9sDuration of one animated cycle.
--mv-noise-z10z-index with data-layer="over".

Accessibility

Decorative (pseudo-element, pointer-events: none). Keep the opacity low behind text. The animation stops under reduced motion.

Diese Seite wurde mit KI übersetzt. Übersetzungsfehler melden