SVG/Element/path
Das path-Element ist eine Grundform (basic shape), erzeugt aber komplexe Formen, Animationsstrecken oder Maskenregionen.
- Syntax
- Start-Tag: notwendig
- End-Tag: ggf. notwendig
- Elternelemente
- Darf vorkommen in:
jedem Element, das fließenden Inhalt erlaubt. - erlaubte Inhalte
- animate, animateMotion, animateTransform, set, title
Name | Inhalt | Standardwert | Bedeutung |
---|---|---|---|
d | CDATA | Koordinaten des Pfades | |
pathLength | NUMBER | Pfadlänge | |
systemLanguage | IANA | ||
transform | CDATA |
Attribut: Pflichtattribut
Attribut: optionales Attribut
<path d="M 10,110 L 40,-80 L 40,80" />
<path d="M150,110 v-80 h80 v80" />
<path d="M300,110 l-15,-50 l40,-30 l40,30 l-15,50" />
<path d="M 50,100 q100,-100 200,0 t200,0 t200,0 t200,0">
<title>Sinuskurve</title>
</path>
- Kleinbuchstaben relative Angaben (ausgehend vom aktuellen Endpunkt),
- Großbuchstaben dagegen absolute Angaben (ausgehend von Ursprung des Koordinatensystems)
moveTo
-Befehl ändern.Pfadkommandos - die beste Schreibweise?
Im der Spec werden verschiedene Schreibweisen genannt. Es ist möglich zwischen Pfadkommando und Werten, sowie den beiden Koordinaten ein Leerzeichen zu notieren (oder dies bei negativen Werten wegzulassen). Bei umfangreicheren Pfaden verliert man so schnell die Zuordnung. [1]
Dieser Beispiel-Pfad aus der Spec zeigt die von uns bevorzugte Schreibweise[2]:
<path class="SamplePath" d="M100,200 C100,100 250,100 250,200 S400,300 400,200" />
Inhaltsverzeichnis
Siehe auch
- SVG/Tutorials/Pfade - ausführliche Erklärung aller Pfadkommandos
- SVG/Tutorials/Einstieg/Grundformen
- CSS/Funktionen/path()
Weblinks
- WHATWG: The ‘path’ element
- ↑ WHATWG: General information about path data
- ↑ WHATWG: The cubic Bézier curve commands
Pfad-Kommandos
Kommando | Name | Beschreibung |
---|---|---|
M , m |
MoveTo | setzt den aktuellen Punkt fest, von dem aus der Pfad starten soll. |
L |
LineTo | zeichnet eine Linie vom aktuellen zum angegebenen Punkt. |
H |
Horizontal LineTo | zeichnet vom aktuellen Punkt aus eine horizontale Linie. |
V |
Vertical LineTo | zeichnet vom aktuellen Punkt aus eine vertikale Linie. |
Z |
ClosePath | erstellt eine geschlossene Form. |
A |
Elliptical Arc | zeichnet vom aktuellen Punkt aus einen elliptischen Bogen. |
C |
CurveTo | zeichnet vom aktuellen Punkt aus eine Bézier-Kurve. |
S |
Shorthand/Smooth CurveTo | ähnlich dem Kommando C, jedoch wird hier als erster Kontrollpunkt der letzte aus der direkt zuvor festgelegten Bézier-Kurve verwendet. |
Q |
Quadratic Bézier CurveTo | zeichnet eine quadratische Bézier-Kurve. |
T |
Shorthand/Smooth Quadratic Bézier CurveTo | ähnlich dem Kommando Q, jedoch wird hier als erster Kontrollpunkt der letzte aus der direkt zuvor festgelegten quadratischen Bézier-Kurve verwendet. |
R |
Catmull-Rom | zeichnet vom aktuellen Punkt aus eine Catmull-Rom-Kurve. Aus SVG2 herausgefallen! |
B |
Bearing | gibt Winkelmaß für die weitere Verlaufsrichtung an Aus SVG2 herausgefallen! |
SVG erlaubt verschiedene Schreibweisen für den Inhalt des d
-Attributs:
- x- und y-Koordinaten können mit Leerzeichen oder wie bei Polygonen mit Komma getrennt angegeben werden. Es sind auch Kombinationen aus beliebig vielen Leerzeichen mit einem Komma möglich.
- Vor und hinter dem Kommando können sich beliebig viele (also auch keine) Leerzeichen befinden.
- Befehlsketten der Form
L0 10 L50 20 L12 34
können inL0 10 50 20 12 34
umgewandelt werden, da Browser den letzten Befehl so lange auf die Punkte anwenden, bis sie einen neuen erhalten. Davon ausgenommen ist der MoveTo-Befehl, der als LineTo wiederholt wird. - Die wissenschaftliche Exponentialnotation von Zahlen ist möglich. Statt
2000
kann man auch2e3
(für 2·103) schreiben. Die Zahl hinter deme
muss eine ganze Zahl sein. - Auf die beiden Bogen-Flags (4. und 5. Parameter von
A
/a
) muss jeweils kein Trennzeichen folgen, da sie genau ein Zeichen lang sind (0
oder1
). - Bei Kommazahlen, bei denen vor dem Komma eine 0 steht, kann diese weggelassen werden (z. B.
.5
,-.5
). - Das Leerzeichen zwischen zwei Zahlen kann weggelassen werden, wenn die zweite Zahl negativ ist. Handelt es sich bei der ersten Zahl um eine Kommazahl oder eine Zahl in wissenschaftlicher Notation, gilt dies auch für Zahlen, die kleiner als 1 sind und bei denen die führende 0 weggelassen wird.
M0.5 0.5 l-1.5 0.5 -1000 0.5
kann man auchm.5.5-1.5.5-1e3.5
schreiben.
Catmull-Rom-Kurven
Dieser Befehl war vorgesehen, um Catmull-Rom-Spline-Kurven[1] zu erstellen. Er wurde aber von keinem Browser implementiert. Es gibt eine experimentelle Library von Doug Schepers, die eine Catmull-Rom Interpolation durchführt und mit Bezier-Kurven darstellt[2].
Kommando | Name | Parameter | Beschreibung |
---|---|---|---|
R (absolut)r (relativ) |
Catmull-Rom | x1 y1 x2 y2 (x y)+ | zeichnet vom aktuellen Punkt aus eine Catmull-Rom-Kurve.
Die Kurve startet von (x1, y1), verläuft durch alle folgenden Punkte bis zum vorletzten angegebenen Punkt. Der Punkt vor dem R-Befehl stellt den ersten Kontrollpunkt dar und kontrolliert den Tangens von (x1, y1). Der Endpunkt des Befehls liefert den finalen Kontrollpunkt und bestimmt den Tangens der Kuve, die durch den vorletzten Punkt der Kurve verläuft. |
Gradangaben mit Bearing
Der bearing
-Befehl soll es ermöglichen, für nachfolgende Pfad-Befehle einen Winkel vorzugeben, um den das Ergebnis dieses Befehls gedreht wird.[3] Damit werden aufwändige Koordinatenberechnungen oder nachgelagerte Transformationen überflüssig.
Der Bearing-Befehl wurde bisher von keinem Browser implementiert und ist aus der SVG2-Spezifikation wieder entfernt worden - woraufhin die diversen Browser-Tickets, die diesen Befehl forderten, auf won't fix gesetzt wurden.
Kommando | Name | Parameter | Beschreibung |
---|---|---|---|
B (absolut)b (relativ) |
bearing | Winkel+ | legt ein Winkelmaß in Grad fest. 0 entspricht der Richtung der positiven X-Achse.
|
<svg>
<path fill="#dfac20" stroke="#3983ab" stroke-width="1"
d="M 150,10
B 36 h 47
b 72 h 47
b 72 h 47
b 72 h 47 z"/>
</svg>
- ↑ w3.org: 4.8. The Catmull-Rom curve commands vom 08.07.2015
- ↑ github: Catmull-Rom Spline to Bezier Spline Converter
- ↑ w3.org: 4.9. The bearing commands vom 08.07.2015
Der letzte Pfad enthält ein title-Element als Kindelement, das bei :hover angezeigt wird. Deshalb erhält der Pfad einen hier obligatorischen End-Tag.