SVG Line
Das SVG <line>-Element erklärt: Linie mit x1/y1/x2/y2 zeichnen, mit stroke gestalten, Striche und Pfeilspitzen hinzufügen und mit <path> vergleichen.
Beschreibung des <line>-Elements
Das SVG-Element <line> zeichnet eine einzelne gerade Linie zwischen zwei Punkten: einem Startpunkt (x1, y1) und einem Endpunkt (x2, y2). Verwenden Sie es immer dann, wenn Sie eine einfache Linie, Achse, Verbindung oder Trennlinie innerhalb eines <svg> benötigen — es ist die einfachste und lesbarste Möglichkeit, „eine Linie von A nach B" auszudrücken.
Alle vier Koordinatenattribute haben den Standardwert 0 und akzeptieren entweder Längenangaben (Benutzereinheiten wie 30 oder 30px) oder Prozentangaben relativ zum viewport (wie 50%). Ein <line>-Element ohne Attribute ist daher eine Linie der Länge null am Ursprung, die nichts darstellt.
Da ein <line>-Element geometrisch eindimensional ist, hat es keinen inneren Bereich. SVG füllt das Innere einer Form mit der fill-Farbe und zeichnet den Umriss mit der stroke-Farbe — eine Linie hat jedoch kein Inneres. Aus diesem Grund wird das fill-Attribut ignoriert, und eine Linie ist unsichtbar, bis Sie ihr einen stroke zuweisen.
Beispiel des SVG-<line>-Elements:
<!DOCTYPE html>
<html>
<head>
<title>Title of the document</title>
</head>
<body>
<svg height="310" width="400">
<line x1="50" y1="30" x2="300" y2="300" style="stroke:rgb(8, 112, 177);stroke-width:3" />
</svg>
</body>
</html>Erklärung des obigen Codes:
- Das Attribut
x1gibt die x-Koordinate des Startpunkts an. - Das Attribut
y1gibt die y-Koordinate des Startpunkts an. - Das Attribut
x2gibt die x-Koordinate des Endpunkts an. - Das Attribut
y2gibt die y-Koordinate des Endpunkts an.
Standardmäßig werden Linien mit einem schwarzen Strich und einer Strichbreite von 1 Pixel gezeichnet. Sie können diese Einstellungen mit den Attributen stroke und stroke-width anpassen, wie im Beispiel gezeigt.
Linien gestalten: Striche, Enden und Pfeilspitzen
Das Erscheinungsbild einer Linie wird ausschließlich durch strichbezogene Eigenschaften gesteuert. Das folgende Beispiel zeichnet drei Linien mit unterschiedlicher Gestaltung:
stroke-dasharraywandelt eine durchgezogene Linie in eine gestrichelte oder gepunktete um. Der Wert ist eine Liste aus Strich- und Lückenlängen (8 4bedeutet ein 8-Einheiten-Strich gefolgt von einer 4-Einheiten-Lücke, die sich wiederholt).stroke-linecapbestimmt die Form der Linienenden —butt(Standard, flach),roundodersquare.
<!DOCTYPE html>
<html>
<head>
<title>Title of the document</title>
</head>
<body>
<svg height="160" width="320">
<!-- Solid line -->
<line x1="20" y1="30" x2="300" y2="30"
stroke="rgb(8, 112, 177)" stroke-width="4" />
<!-- Dashed line -->
<line x1="20" y1="80" x2="300" y2="80"
stroke="rgb(8, 112, 177)" stroke-width="4"
stroke-dasharray="12 6" />
<!-- Rounded dotted line -->
<line x1="20" y1="130" x2="300" y2="130"
stroke="rgb(8, 112, 177)" stroke-width="8"
stroke-linecap="round" stroke-dasharray="0.1 20" />
</svg>
</body>
</html>Zwei weitere Eigenschaften sind bei Linien nützlich:
marker-endhängt einen wiederverwendbaren<marker>(definiert in<defs>) an das Ende der Linie — die Standardmethode, um eine Pfeilspitze hinzuzufügen.vector-effect="non-scaling-stroke"hält die Strichbreite auch beim Skalieren des SVG konstant, sodass eine haarfeine Linie unabhängig vom Zoomgrad haarfein bleibt.
SVG <line> vs. SVG <path>
Die SVG-Elemente <line> und <path> zeichnen beide Linien, dienen jedoch unterschiedlichen Zwecken. Das <line>-Element ist speziell für einfache, gerade Linien konzipiert und für diese Aufgabe semantisch klarer und effizienter. Das <path>-Element wird verwendet, um komplexe Formen oder mehrere verbundene Linien und Kurven zu definieren. Obwohl <path> gerade Linien zeichnen kann, ist es im Allgemeinen besser, <line> für einfache gerade Abschnitte zu verwenden und <path> für komplexere Zeichnungen zu reservieren.
Dieselbe gerade Linie kann auf beide Weisen ausgedrückt werden. Das <line>-Element aus dem ersten Beispiel entspricht einem <path>, der zum Startpunkt springt (M50,30) und eine Linie zum Endpunkt zeichnet (L300,300):
<!DOCTYPE html>
<html>
<head>
<title>Title of the document</title>
</head>
<body>
<svg height="310" width="400">
<!-- These two draw the same line -->
<line x1="50" y1="30" x2="300" y2="300"
stroke="rgb(8, 112, 177)" stroke-width="3" />
<path d="M50,30 L300,300"
stroke="rgb(255, 159, 0)" stroke-width="3" />
</svg>
</body>
</html>Die <path>-Variante ist für ein einzelnes Segment ausführlicher, was genau der Grund für die Existenz von <line> ist. Wenn Sie mehrere gerade Abschnitte aneinanderreihen müssen, verwenden Sie <polyline> anstatt viele <line>-Elemente zu stapeln.
Das SVG-Element <line> unterstützt außerdem die Globalen Attribute und Ereignisattribute.