SVG Wave Generator
Create decorative SVG wave dividers for websites.
Geprüft von Aygul Dovletova · Zuletzt geprüft
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1440 120" preserveAspectRatio="none"> <path d="M0 120 L0 0 C160 84 320 36 480 0 C640 36 800 84 960 0 C1120 84 1280 36 1440 0 L1440 120 Z" fill="#2563eb" fill-opacity="1" /> </svg>
So wird der SVG-Wellengenerator verwendet
- Wellenhöhe einstellen - steuert die vertikale Amplitude der Kurve in Pixeln der SVG-ViewBox.
- Wellenanzahl wählen (Anzahl der Kämme über die Breite). Mehr Kämme erzeugen eine engere, höherfrequente Welle; weniger Kämme wirken als eine einzige breite Dünung.
- Füllfarbe und Opazität wählen pro Ebene. Bis zu drei Ebenen lassen dich einen Parallax-ähnlichen Tiefeneffekt mit abnehmender Opazität auf den hinteren Ebenen aufbauen.
- Umkehren umschalten, um den Pfad umzukehren, sodass die Kurve nach oben oder unten zeigt, was wichtig ist, wenn du die Welle als Trenner zwischen Abschnitten stapelst.
- SVG-Markup kopieren für Inline-Verwendung, CSS-Hintergrund (data-URI-kodiert) für die Verwendung als Hintergrundbild kopieren, oder SVG herunterladen für ein Datei-Asset.
Wie der Pfad berechnet wird
Der Generator erstellt ein SVG-<path>-Element unter Verwendung des kubischen Bezier-Befehls C, wie in der SVG-2-Pfadspezifikation definiert. Für eine Welle mit N Kämmen über eine 1440-Einheiten-ViewBox legt der Pfad N+1 Ankerpunkte bei (0,amp), (1440/N, 0), (2*1440/N, amp) und so weiter, alternierend zwischen hohen und niedrigen y-Positionen. Zwischen jedem Paar von Ankern gibt das Tool ein kubisches Segment aus, dessen zwei Kontrollpunkte bei einem Drittel und zwei Dritteln des horizontalen Abstands liegen, mit y-Werten gleich dem Anker, den sie flankieren - das erzeugt das klassische sinusförmige "S" mit glatter Tangentenkontinuität (C1-Kontinuität in Kurvenmathematik-Begriffen). Nach dem letzten Anker schließt der Pfad nach unten zur unteren Ecke der ViewBox und zurück zum Ursprung, was ein gefülltes Wellenband statt eines Strichs erzeugt. Wenn du eine zweite oder dritte Ebene hinzufügst, ist jede dasselbe Pfad-Primitiv mit einem frisch zufälligen Phasenversatz auf den Anker-y-Werten, sodass die Kämme visuell nicht ausgerichtet sind, obwohl die Geometrie identisch ist.
Echte Anwendungen
- Marketing-Seiten-Abschnittstrenner, um den Übergang zwischen dem Hero und dem ersten Inhaltsblock zu mildern.
- Fußzeilen-Mastheads, bei denen eine Wellensilhouette gegen eine dunkle Farbe den unteren Teil der Seite verankert.
- Karten-Ober- oder Unterkanten für verspielte UI-Komponenten wie Preistabellen oder Team-Biografien.
- Hero-Hintergründe mit mehreren überlappenden Ebenen bei abnehmender Opazität, um Ozeantiefe zu imitieren.
- E-Mail-Templates, weil ein Inline-SVG eines der wenigen Grafik-Primitive ist, die konsistent über Gmail, Outlook und Apple Mail gerendert werden.
Häufige Fallstricke
Das häufigste Problem ist ein ViewBox-vs-CSS-Größen-Mismatch. Das SVG ist in einer 1440x150-ViewBox erstellt, aber wenn es über background-image gerendert wird, streckt der Browser es, was die Welle verzerrt, wenn das Container-Seitenverhältnis abweicht. background-size: 100% auto oder preserveAspectRatio="none" hinzufügen, um die Streckung zu steuern. Zweitens, Data-URI-URL-Kodierung: die Hintergrundausgabe prozent-kodiert # als %23, weil Browser sonst das Hash-Zeichen als Fragment parsen. Drittens, Barrierefreiheit: eine dekorative Welle sollte aria-hidden="true" und einen leeren <title> erhalten, damit Screenreader sie überspringen - das Tool gibt Markup ohne diese Attribute aus, also bei der Integration hinzufügen. Schließlich erzeugen sehr hohe Wellenanzahlen (>12) kombiniert mit kleinen Höhen kubische Segmente, die ihre Anker aufgrund von Gleitkomma-Rundung überschießen.
Warum SVG das richtige Format ist
SVG 1.1 (W3C-Empfehlung 2011, jetzt von SVG 2 aus 2018 abgelöst) definiert ein XML-basiertes Vektorgrafik-Format, dessen Pfade auflösungsunabhängig sind und dessen Dateigröße mit der Anzahl gezeichneter Befehle skaliert, nicht mit der Pixelanzahl. Ein Wellenteiler, beschrieben als ein <path d="...">, ist typischerweise 200-600 Bytes unkomprimiert, was ungefähr 30-mal kleiner ist als das entsprechende 1440x150 PNG-Export bei 1x und katastrophisch kleiner bei 2x oder 3x Retina. SVG rendert auch durch den GPU-Pfad als scharfe Kurven bei jeder Zoomstufe, sodass dieselbe Welle auf einem Telefon, einem 4K-Display und bei Druck-DPI scharf aussieht. Die Alternative wäre ein CSS-clip-path: polygon(), der auch skaliert, aber die Kurve als Polygon mit vielen Eckpunkten annähert; für Glätte braucht man 50-100 Eckpunkte, was eine größere Deklaration ergibt als den SVG-Pfad.
Vergleich mit anderen Wellen-Tools
Haikei und Shape Divider by ShapeDividerApp decken ähnliches Gelände mit mehr Formvarianten ab (Blob-Felder, Bauhaus-Ebenen, Gradientengitter). Haikeis Export-Ausgabe ist mit der dieses Tools vergleichbar. Figma-Plugins wie "Waves" generieren dasselbe Primitiv in der Design-Datei, zwingen aber dazu, SVG manuell zu exportieren. Wenn man nur eine einzige Welle braucht und sie auf einer Seite erscheinen soll, ist das Erstellen eines kubischen Bezier-Pfads von Hand in unter 60 Sekunden mit einer Zeile wie <path d="M0,75 C360,0 1080,150 1440,75 L1440,150 L0,150 Z"/> möglicherweise schneller als das Öffnen eines Tools, und ist das, was man tun sollte, wenn das Design bereits eng mit Tailwinds Arbitrary-Value-Klassen integriert ist. Generatoren wie diesen verwenden, wenn man mehr als eine Ebene braucht, mit Zufälligkeit experimentieren möchte oder direkt im Browser designt.
Häufig gestellte Fragen
Warum sieht meine Welle bei kleiner Höhe gezackt aus?
Bei Höhen unter etwa 40 Pixeln des ViewBox enden die kubischen Bezier-Kontrollpunkte sehr nah an den Ankerpunkten, sodass die Tangente flach ist und subtiles Sub-Pixel-Runden auf dem Client als sichtbare Treppenstufe erscheint. Die Lösung ist entweder die Höhe zu erhöhen, die Wellenanzahl zu verringern (weniger Wellenkämme bei derselben Amplitude ist visuell glatter) oder das SVG inline zu rendern, sodass der Browser seinen vollständigen Pfad-Rasterisierer statt der Hintergrundbilder-Pipeline verwendet.
Wie mache ich die Welle responsiv?
Das SVG auf 100% Breite mit <code>preserveAspectRatio="none"</code> setzen, damit es horizontal gestreckt wird, während es seine Pixelhöhe behält. Für ein wirklich fluides Gefühl die feste Höhe weglassen und dem SVG-Wrapper eine viewport-relative Höhe wie <code>clamp(60px, 10vw, 150px)</code> geben. Vermeiden, es als Hintergrundbild in fester Größe auf hohen Viewports zu verwenden - die Welle wird gekachelt oder Lücken hinterlassen.
Kann ich die Welle animieren?
Ja, und der sauberste Weg ist, zwei oder drei Frames im Tool mit leicht unterschiedlicher Zufälligkeit zu generieren, sie in eine CSS-Keyframes- Animation mit <code>animation-duration: 8s</code> zu setzen und zwischen ihnen überzublenden. Für eine wirklich fließende Welle ein Inline-SVG verwenden und das <code>d</code>-Attribut über SMIL (<code><animate></code>) oder die Web-Animations-API mit einem interpolierten Pfad animieren - das ist aufwendiger, erzielt aber ein kontinuierliches Kräuseln.
Warum hat die CSS-Hintergrund-Ausgabe all diesen %23-Müll?
Weil innerhalb eines <code>url("data:image/svg+xml,...")</code>-Werts das Hash-Zeichen reserviert ist (URLs verwenden es für Fragmente), die spitzen Klammern den CSS-Parser verwirren können und das doppelte Anführungszeichen offensichtlich escaped werden muss. Das Tool prozent-kodiert den minimalen Zeichensatz, der in Produktionsbrowsern echte Probleme verursacht - genug für Chrome, Firefox und Safari, den URI zu parsen, ohne etwas zu entfernen.
Ist SVG das richtige Format gegenüber PNG?
Für jede geschwungene oder geometrische Form, ja. SVG-Dateien für einen Wellenteiler sind typischerweise einige hundert Bytes, skalieren scharf auf jede Größe und ermöglichen das Ändern der Farbe über CSS-Variablen, wenn sie inline eingebettet werden. PNGs der gleichen Welle sind Kilobytes bei 1x und zehn Kilobytes bei 3x-Retina und können nicht neugestaltet werden. Die Ausnahme sind komplexe Raster-Texturen (fotorealistische Wasseroberflächen), bei denen PNG oder WebP in einer bekannten Pixelgröße gewinnt.
Wie viele Ebenen sollte ich verwenden?
Eine Ebene ist sauber und meistens richtig. Zwei Ebenen bei 100% und 60% Opazität geben einen sanften Parallax-Hinweis. Drei Ebenen ist das Maximum des Tools und wirkt wie "vollständige Ozean-Illustration" - schön auf einem Hero, übertrieben auf einem Abschnittstrenner. Vier oder mehr vermeiden, weil die kombinierte Dateigröße wächst und die visuelle Geschichte trübe wird.
Wird die Welle in E-Mail-Clients gerendert?
Inline-SVG rendert in Apple Mail, Thunderbird und dem neueren Outlook im Web; es schlägt in Outlook unter Windows (Word-Renderer) und der klassischen mobilen Gmail-App fehl. Für E-Mail die Welle als PNG in 2x Zielgröße rendern, oder akzeptieren, dass eine kleine Bevölkerung ein fehlendes Bild sieht.
Kann ich die Farbe nach dem Einfügen ändern?
Ja, wenn du die Inline-SVG-Ausgabe verwendest: den hartkodierten Füll-Hex mit einer CSS-Custom-Property über <code>fill="currentColor"</code> plus <code>color: var(--wave-fill)</code> auf dem Wrapper ersetzen, und die Welle gestaltet sich mit dem Rest deines Themes um. Die CSS-Hintergrund- Ausgabe backt die Farbe in den Data-URI ein, sodass du für eine neue Gestaltung regenerieren oder die kodierte Zeichenkette von Hand bearbeiten musst.
Was ist das SVG-ViewBox und warum ist es wichtig?
Die ViewBox ist das interne Koordinatensystem, in dem der Pfad gezeichnet wird - 1440 Einheiten breit und 150 Einheiten hoch in der Ausgabe dieses Tools. Die CSS-Breite und -Höhe des gerenderten Elements werden dann durch die preserveAspectRatio-Regel auf diesen Raum abgebildet. Das Verstehen davon trennt Design-Zeit-Koordinaten von Bereitstellungs-Zeit-Pixelgrößen, weshalb dasselbe SVG auf einem Telefon und einem 4K-Display identisch aussieht.
Sendet das Tool meine Einstellungen an einen Server?
Nein. Jeder Schieberegler treibt lokalen Zustand in einer Preact-Komponente; die Pfadzeichenkette wird bei jeder Änderung im Speicher neu aufgebaut und in das SVG-Element des DOM geschrieben. Die Kopier- und Download-Schaltflächen verwenden jeweils die Clipboard-API und einen programmatischen Anker-Download. Nichts berührt einen entfernten Endpunkt, nichts ist mit deinen Farbauswahlen in Analytics-Tags versehen.
Mehr CSS & Design
Aspect Ratio Calculator
Calculate and visualize aspect ratios for any dimensions.
Open toolBlob Shape Generator
Generate organic blob shapes as SVG.
Open toolBorder Radius Generator
Create CSS border-radius with a visual corner editor.
Open toolCSS Box Shadow Generator
Create CSS box shadows with a visual editor. CSS box-shadow generator, shadow maker and box-shadow builder with live preview, multi-layer support and Material elevation presets.
Open toolColor Palette Generator
Generate harmonious color palettes, Tailwind-style 50-900 scales and design-system tokens from any base hex color. Also a hex color palette generator (Farbpalette Generator auf Deutsch).
Open toolColor Picker
Pick colors visually and get HEX, RGB, and HSL values.
Open tool