Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.
Füllen und Konturieren sind die zwei zentralen Painting-Operationen in SVG. Formen, paths und Text können fill für die Innenfläche und stroke für die Kontur verwenden. Beide können als presentation attributes wie fill="red" oder innerhalb des CSS-Attributs style angegeben werden.
Dieser Artikel erklärt, wie SVG fill und stroke funktionieren, klärt den Unterschied zwischen properties und attributes und zeigt praktische Möglichkeiten, Farbe, opacity, Linienstärke, line caps, line joins und dash patterns zu steuern.
In diesem Artikel lernen Sie:
fill zu verwenden, um das Innere von SVG-Formen, paths und Text zu malen.stroke und stroke-width zu verwenden, um Konturen zu zeichnen.Wenn eine SVG-Form gerendert wird, erfolgt Painting in zwei Schritten:
Sowohl fill als auch stroke sind optional:
Für SVG-Farben können Sie Farbnamen, HEX-Werte, RGB-Werte, currentColor, Farbverläufe oder Muster verwenden. Die folgenden Beispiele zeigen mehrere Schreibweisen für fill- und stroke-Werte in SVG-Markup.
In SVG sind fill und stroke als CSS-properties definiert, können aber auf unterschiedliche Weise angewendet werden.
fill oder stroke-width.| Konzept | Beispiel |
|---|---|
| CSS property | fill, stroke, stroke-width |
| Presentation attribute | fill="red" stroke="#00ff00" stroke-width="2" |
| Inline CSS | style="fill:red; stroke:#00ff00; stroke-width:2" |
In diesem Artikel gilt:
Verwenden Sie presentation attributes für einfaches SVG-Markup und inline CSS, wenn mehrere style properties auf demselben Element zusammenbleiben sollen. Beide Formen sind in SVG-Dateien üblich.
<path>, <rect>, <circle>, <polyline> oder <text>.fill, um die Innenfläche zu malen, oder verwenden Sie fill="none", wenn nur die Kontur sichtbar sein soll.stroke, um die Konturfarbe festzulegen.stroke-width, um die Kontur sichtbar zu machen und ihre Stärke zu steuern.stroke-linecap, stroke-linejoin oder stroke-dasharray hinzu, wenn die Kontur eine bestimmte Form oder ein bestimmtes Muster haben soll.fill-opacity und stroke-opacity, wenn Füllung und Kontur unterschiedliche Transparenzwerte benötigen.Die property fill legt fest, wie die Innenfläche einer Form oder eines Textes gemalt wird. Sie gilt für SVG-Formen wie <rect>, <circle>, <path> und für Textelemente. Wenn fill nicht angegeben ist, ist der Standardwert black.
| Wert | Beschreibung | Beispiel |
|---|---|---|
| Farbwert | Füllt die Form mit einer festen Farbe | fill="red" |
none | Deaktiviert die Füllung | fill="none" |
url(#id) | Verwendet einen paint server wie gradient oder pattern | fill="url(#gradient1)" |
currentColor | Verwendet die aktuelle Textfarbe | fill="currentColor" |
Das folgende Beispiel vergleicht einen path mit fill="none" und denselben path ohne explizite Füllung (
two-paths.svg):
1<svg height="400" width="800" xmlns="http://www.w3.org/2000/svg">
2 <path d="M 10 100 Q 25 10 180 100 T 250 100 T 300 100 T 390 130" stroke="red" stroke-width="3" fill="none" />
3 <path d="M 10 100 Q 25 10 180 100 T 250 100 T 300 100 T 390 130" stroke="red" stroke-width="3" transform="translate(0 125)" />
4</svg>
Die property stroke definiert die Farbe oder paint source für die Kontur einer Form. Anders als fill ist stroke standardmäßig deaktiviert. Die Kontur liegt mittig auf dem Pfad der Form und ragt gleichmäßig nach innen und außen.
| Property | Beschreibung | Beispiel |
|---|---|---|
stroke | Legt die Konturfarbe fest | stroke="red" |
stroke-width | Steuert die Konturstärke | stroke-width="5" |
stroke-linecap-WerteFür jede Linie kann die Form ihrer Enden festgelegt werden. Die property stroke-linecap definiert, wie die Enden einer SVG-Linie gerendert werden, und hat drei mögliche Werte:
| Wert | Darstellung |
|---|---|
butt | Flacher Abschluss genau am Endpunkt des Pfads. |
square | Flacher Abschluss, der um eine halbe stroke width über den Endpunkt hinausragt. |
round | Halbkreisförmiges Ende mit einem Radius von der halben stroke width. |
Der Effekt ist sichtbar, wenn die Linie eine deutliche stroke-width hat. Das Beispiel unten zeigt, wie stroke-width und stroke-linecap Konturstärke und Form der Linienenden bestimmen (
lines.svg).
1<svg height="200" width="800" xmlns="http://www.w3.org/2000/svg">
2 <g stroke="grey">
3 <path stroke-width="3" d="M 5 20 l 215 0" />
4 <path stroke-width="15" d="M 5 60 l 215 0" />
5 <path stroke-width="30" d="M 5 100 l 215 0" />
6 </g>
7 <g stroke="grey" stroke-width="30">
8 <path stroke-linecap="butt" d="M 300 20 l 215 0" />
9 <path stroke-linecap="round" d="M 300 60 l 215 0" />
10 <path stroke-linecap="square" d="M 300 100 l 215 0" />
11 </g>
12 <g stroke="orange" stroke-width="2">
13 <line x1="300" y1="20" x2="515" y2="20" />
14 <path d="M 300 60 l 215 0" />
15 <path d="M 300 100 l 215 0" />
16 </g>
17</svg>Im Beispiel setzt das <g>-Element gemeinsame properties wie stroke und stroke-width für mehrere untergeordnete paths.

Im Beispiel oben zeigen die orangefarbenen Hilfslinien die ursprünglichen paths, während die grauen Konturen zeigen, wie stroke width und line caps das gerenderte Ergebnis verändern.
stroke-linejoin-WerteDie property stroke-linejoin steuert die Form von Ecken, an denen zwei stroke-Segmente aufeinandertreffen. Drei häufige Werte sind:
| Wert | Beschreibung |
|---|---|
miter | Verlängert die Außenkanten zu einer Ecke, Standardwert. |
round | Rundet die Ecke mit einem Radius von der halben stroke width. |
bevel | Schneidet die Ecke ab und erzeugt eine flache Kante. |
Das nächste Beispiel zeigt die Werte von stroke-linejoin (
linejoin.svg):
1<svg width="300" height="300" xmlns="http://www.w3.org/2000/svg">
2 <g stroke-width="20" fill="none">
3 <polyline points="40 60 80 20 120 60 160 20 200 60 240 20" stroke="grey" stroke-linecap="butt" stroke-linejoin="miter" />
4 <polyline points="40 140 80 100 120 140 160 100 200 140 240 100" stroke="#CD5C5C" stroke-linecap="round" stroke-linejoin="round" />
5 <polyline points="40 220 80 180 120 220 160 180 200 220 240 180" stroke="black" stroke-linecap="square" stroke-linejoin="bevel" />
6 </g>
7 <g fill="none" stroke="orange" stroke-width="2">
8 <polyline points="40 60 80 20 120 60 160 20 200 60 240 20" />
9 <polyline points="40 140 80 100 120 140 160 100 200 140 240 100" />
10 <polyline points="40 220 80 180 120 220 160 180 200 220 240 180" />
11 </g>
12</svg>
Die orangefarbene Linie zeigt den ursprünglichen polyline path, während die breitere farbige Kontur den gerenderten stroke darum zeigt.
stroke-dasharrayAlle SVG-stroke-properties können auf Linientypen, Text und Konturen von Elementen wie Kreis oder Rechteck angewendet werden. Die property stroke-dasharray wandelt eine durchgehende Kontur in eine Folge aus Strichen und Lücken um. Das Attribut akzeptiert eine Liste von Zahlen, die abwechselnd Strich- und Lückenlängen in Benutzereinheiten, meist Pixeln, definieren.
1stroke-dasharray="10 5" /* dash 10, gap 5 */
2stroke-dasharray="20 10 5"/* dash 20, gap 10, dash 5, then repeats */| Property | Beschreibung |
|---|---|
stroke-dasharray | Definiert das Muster aus Strichen und Lücken |
stroke-dashoffset | Verschiebt das dash pattern |
Hier ist ein Beispiel mit stroke-dasharray (
dasharray.svg):
1<svg width="400" height="300" xmlns="http://www.w3.org/2000/svg">
2 <line x1="20" y1="30" x2="400" y2="30" style="stroke:rgb(112, 128, 144); fill:none; stroke-width:10; stroke-dasharray:10 5;" />
3 <line x1="20" y1="80" x2="400" y2="80" style="stroke:olive; fill:none; stroke-width: 20; stroke-dasharray: 20 10 5;" />
4 <path d="M 10 200 Q 50 100 150 200 T 230 200 T 300 200 T 390 200" stroke="#FF8C00" stroke-width="8" fill="none" stroke-linecap="round" stroke-dasharray="15 10 2 8" />
5</svg>Bei der grauen und der orangefarbenen Linie hat das dash pattern eine gerade Anzahl von Werten: Jedes Paar bedeutet Strichlänge und Lückenlänge. Wenn die Liste eine ungerade Anzahl von Werten hat, wiederholt SVG die Liste, um ein gerades Muster zu erzeugen. Zum Beispiel wird 20 10 5 zu 20 10 5 20 10 5, wie die olivfarbene Linie zeigt.

Sie können mit dem Attribut stroke-dasharray experimentieren. Mit SVG-strokes und einfachen SVG-Formen lassen sich erstaunliche Effekte erzielen (
dasharray-example.svg):
1<svg height="600" width="600" xmlns="http://www.w3.org/2000/svg">
2 <g fill="none">
3 <circle cx="100" cy="100" r="40" stroke="red" stroke-width="55" stroke-dasharray="4,2" />
4 <circle cx="100" cy="100" r="30" stroke="grey" stroke-width="45" stroke-dasharray="5,2" transform="translate(120,40)" />
5 <circle cx="100" cy="100" r="35" stroke="orange" stroke-width="45" stroke-dasharray="9,3" transform="translate(30,130)" />
6 <circle cx="100" cy="100" r="20" stroke="pink" stroke-linecap="round" stroke-width="20" stroke-dasharray="10,15" transform="translate(380,120)" />
7 <rect x="320" y="100" width="100" height="100" stroke="DarkCyan" stroke-width="55" stroke-dasharray="7 7 3 2" />
8 <text x="200" y="300" font-family="arial" font-size="60" stroke="#000080" stroke-width="3" stroke-dasharray="2 1">I love SVG!</text>
9 </g>
10</svg>
| Attribut | Zweck | Beispiel |
|---|---|---|
fill-opacity | Wert von 0 transparent bis 1 deckend | fill-opacity="0.6" |
fill-rule | Bestimmt, wie komplexe Formen gefüllt werden. Optionen: nonzero als Standard oder evenodd. | fill-rule="evenodd" |
stroke-opacity | Wert von 0 transparent bis 1 deckend | stroke-opacity="0.6" |
stroke-miterlimit | Steuert die maximale Länge einer miter join. Werte > 1. | stroke-miterlimit="4" |
stroke-dashoffset | Verschiebt den Anfang eines dash pattern entlang des path. | stroke-dashoffset="5" |
Diese Attribute können mit den oben gezeigten kombiniert werden, um präzise visuelle Kontrolle zu erreichen.
Setzen Sie fill="none". Dadurch wird die Innenfläche entfernt, während der stroke sichtbar bleibt. Mit stroke und stroke-width steuern Sie die Kontur.
fill malt das Innere einer Form, eines path oder eines Textes. stroke malt die Kontur entlang der Elementgrenze oder des path. Eine Form kann beides gleichzeitig verwenden.
Dash-Längen werden entlang der Pfadlänge gemessen. Kurven können Strichsegmente visuell ungleichmäßig erscheinen lassen. Passen Sie Strich- und Lückenwerte an oder verwenden Sie stroke-dashoffset, um das Muster feinzujustieren.
stroke-linecap beeinflusst die Enden offener sub-paths, während stroke-linejoin Ecken beeinflusst, an denen zwei Segmente zusammentreffen. Verwenden Sie round für beide, wenn Endpunkte und Ecken weicher aussehen sollen.
Ja. Gradients und patterns können mit fill="url(#id)" oder stroke="url(#id)" angewendet werden, wobei id auf eine gradient- oder pattern-Definition verweist.
| Problem | Ursache | Lösung |
|---|---|---|
Form erscheint trotz fill-Attribut schwarz | fill wurde ausgelassen oder steht auf dem Standardwert | Fügen Sie fill="none" oder eine gültige Farbe hinzu, etwa fill="#00ff00". |
| Striche fehlen auf einer gekrümmten Linie | stroke-dasharray-Werte sind für die Kurvenlänge zu klein | Erhöhen Sie Strich- und Lückenlängen oder verwenden Sie stroke-dashoffset zum Neupositionieren. |
| Stroke caps wirken abgeschnitten | stroke-linecap ist bei dicken strokes nicht gesetzt | Setzen Sie stroke-linecap="square" oder round, um die Enden korrekt zu rendern. |
| Miter joins erzeugen sehr lange Spitzen | Scharfe Winkel verwenden stroke-linejoin="miter" mit hohem miter limit | Senken Sie stroke-miterlimit oder verwenden Sie stroke-linejoin="round" oder bevel. |
| Opacity wirkt unbeabsichtigt auf fill und stroke | opacity wird statt fill-opacity / stroke-opacity verwendet | Ersetzen Sie opacity durch fill-opacity und/oder stroke-opacity. |
| Ziel | SVG-Code |
|---|---|
| Füllung deaktivieren | fill="none" |
| Feste Füllfarbe | fill="orange" |
| Halbtransparente Füllung | fill-opacity="0.5" |
| Kontur aktivieren | stroke="black" |
| Dickere Kontur | stroke-width="4" |
| Gestrichelte Kontur | stroke-dasharray="10 5" |
| Abgerundete Linienenden | stroke-linecap="round" |
1. Einfache feste Füllung und Kontur
1<svg width="120" height="120" xmlns="http://www.w3.org/2000/svg">
2 <circle cx="60" cy="60" r="50" fill="#4CAF50" stroke="#026802" stroke-width="4"/>
3</svg>2. Gestrichelte Linie mit Offset
1<svg width="200" height="40" xmlns="http://www.w3.org/2000/svg">
2 <line x1="10" y1="20" x2="190" y2="20" stroke="#ff6600" stroke-width="8" stroke-dasharray="15 5" stroke-dashoffset="7"/>
3</svg>Gestrichelter stroke mit runden Enden
1<line x1="10" y1="40" x2="140" y2="40"
2 stroke="black"
3 stroke-width="4"
4 stroke-dasharray="10 6"
5 stroke-linecap="round" />fill und stroke direkt als SVG-Attribute geschrieben werden können.red, orange oder DarkCyan in SVG-Beispielen benötigen.fill, stroke und stroke-width auf grundlegende SVG-Formen angewendet werden.fill, stroke, inline styles und gradient stops bearbeiten.Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.