Movatterモバイル変換


[0]ホーム

URL:


  1. Web
  2. SVG
  3. Reference
  4. Attributes
  5. d

Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten.Erfahre mehr über dieses Experiment.

View in EnglishAlways switch to English

d

Baseline Widely available *

This feature is well established and works across many devices and browser versions. It’s been available across browsers since Juli 2015.

* Some parts of this feature may have varying levels of support.

Dasd-Attribut definiert einen zu zeichnenden Pfad.

Eine Pfaddefinition ist eine Liste vonPfadbefehlen, wobei jeder Befehl aus einem Befehlsbuchstaben und Zahlen besteht, die die Parameter des Befehls repräsentieren. Die Befehle sindunten detailliert beschrieben.

Dieses Attribut wird mit dem SVG<path> Element verwendet.

d ist ein Präsentationsattribut und kann daher auchals CSS-Eigenschaft verwendet werden.

Beispiel

html,body,svg {  height: 100%;}
html
<svg viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg">  <path    fill="none"    stroke="red"    d="M 10,30       A 20,20 0,0,1 50,30       A 20,20 0,0,1 90,30       Q 90,60 50,90       Q 10,60 10,30 z" /></svg>

pfad

Für<path> istd ein String, der eine Serie von Pfadbefehlen enthält, die den zu zeichnenden Pfad definieren.

Wert<string>
Standardwertnone
AnimierbarJa

Verwendung von d als CSS-Eigenschaft

d ist ein Präsentationsattribut und kann daher auch mit CSS modifiziert werden. Die Eigenschaft nimmt entwederpath() odernone.

Das folgende Beispiel zeigt, wie Sie beim Überfahren eines Elements mit der Maus einen neuen Pfad anwenden könnten. Der neue Pfad ist derselbe wie der alte, fügt jedoch eine Linie über das Herz hinzu.

css
html,body,svg {  height: 100%;}/* This path is displayed on hover */#svg_css_ex1:hover path {  d: path(    "M10,30 A20,20 0,0,1 50,30 A20,20 0,0,1 90,30 Q90,60 50,90 Q10,60 10,30 z M5,5 L90,90"  );}
html
<svg viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg">  <path    fill="none"    stroke="red"    d="M 10,30       A 20,20 0,0,1 50,30       A 20,20 0,0,1 90,30       Q 90,60 50,90       Q 10,60 10,30 z       " /></svg>

Ein Beispiel für eine<path>-Animation finden Sie auf der CSSd-Eigenschaftsreferenzseite.

Pfadbefehle

Pfadbefehle sind Anweisungen, die einen zu zeichnenden Pfad definieren. Jeder Befehl besteht aus einem Befehlsbuchstaben und Zahlen, die die Parameter des Befehls repräsentieren.

SVG definiert 6 Arten von Pfadbefehlen, insgesamt 20 Befehle:

Hinweis:Befehle sindgroß- und kleinschreibungssensitiv. Ein Befehl in Großbuchstaben gibt absolute Koordinaten an, während ein Befehl in Kleinbuchstaben Koordinaten relativ zur aktuellen Position angibt.

Es ist immer möglich, einen negativen Wert als Argument eines Befehls anzugeben:

  • negative Winkel werden gegen den Uhrzeigersinn sein;
  • absolute negativex- undy-Werte werden als negative Koordinaten interpretiert;
  • relative negativex-Werte bewegen sich nach links, und relative negativey-Werte bewegen sich nach oben.

MoveTo Pfadbefehle

MoveTo-Anweisungen können als Aufheben des Zeicheninstruments und Absetzen an einem anderen Ort betrachtet werden—mit anderen Worten, das Bewegen desaktuellen Punkts (Po; {xo,yo}). Es wird keine Linie zwischenPo und dem neuenaktuellen Punkt (Pn; {xn,yn}) gezeichnet.

BefehlParameterAnmerkungen
M (x,y)+

Bewegt denaktuellen Punkt zu den Koordinatenx,y. Jedes nachfolgende Koordinatenpaar wird als Parameter für implizite absolute LineTo (L) Befehle interpretiert (siehe unten).

Formel:Pn = {x,y}

m (dx,dy)+

Bewegt denaktuellen Punkt durch Verschieben der zuletzt bekannten Position des Pfads umdx entlang der x-Achse und umdy entlang der y-Achse. Jedes nachfolgende Koordinatenpaar wird als Parameter für implizite relative LineTo (l) Befehle interpretiert (siehe unten).

Formel:Pn = {xo +dx,yo +dy}

Beispiele

html,body,svg {  height: 100%;}
html
<svg viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg">  <path    fill="none"    stroke="red"    d="M 10,10 h 10       m  0,10 h 10       m  0,10 h 10       M 40,20 h 10       m  0,10 h 10       m  0,10 h 10       m  0,10 h 10       M 50,50 h 10       m-20,10 h 10       m-20,10 h 10       m-20,10 h 10" /></svg>

LineTo Pfadbefehle

LineTo-Anweisungen zeichnen eine gerade Linie vomaktuellen Punkt (Po; {xo,yo}) zumEndpunkt (Pn; {xn,yn}), basierend auf den angegebenen Parametern. DerEndpunkt (Pn) wird dann zumaktuellen Punkt für den nächsten Befehl (Po).

BefehlParameterAnmerkungen
L(x,y)+

Zeichnet eine Linie vomaktuellen Punkt zumEndpunkt, der durchx,y spezifiziert ist. Jedes nachfolgende Koordinatenpaar wird als Parameter für implizite absolute LineTo (L) Befehle interpretiert.

Formel:Po =Pn = {x,y}

l (dx,dy)+

Zeichnet eine Linie vomaktuellen Punkt zumEndpunkt, der deraktuelle Punkt ist, verschoben umdx entlang der x-Achse unddy entlang der y-Achse. Jedes nachfolgende Koordinatenpaar wird als Parameter für implizite relative LineTo (l) Befehle interpretiert (siehe unten).

Formel:Po =Pn = {xo +dx,yo +dy}

Hx+

Zeichnet eine horizontale Linie vomaktuellen Punkt zumEndpunkt, der durch denx-Parameter und denaktuellen Punkty-Koordinate spezifiziert ist. Jede nachfolgende Angabe wird als Parameter für implizite absolute horizontale LineTo (H) Befehle interpretiert.

Formel:Po =Pn = {x,yo}

hdx+

Zeichnet eine horizontale Linie vomaktuellen Punkt zumEndpunkt, der durch denaktuellen Punkt verschoben umdx entlang der x-Achse und denaktuellen Punkty-Koordinate spezifiziert ist. Jede nachfolgende Angabe wird als Parameter für implizite relative horizontale LineTo (h) Befehle interpretiert.

Formel:Po =Pn = {xo +dx,yo}

Vy+

Zeichnet eine vertikale Linie vomaktuellen Punkt zumEndpunkt, der durch deny-Parameter und denaktuellen Punktx-Koordinate spezifiziert ist. Jede nachfolgende Angabe wird als Parameter für implizite absolute vertikale LineTo (V) Befehle interpretiert.

Formel:Po =Pn = {xo,y}

vdy+

Zeichnet eine vertikale Linie vomaktuellen Punkt zumEndpunkt, der durch denaktuellen Punkt verschoben umdy entlang der y-Achse und denaktuellen Punktx-Koordinate spezifiziert ist. Jede nachfolgende Angabe wird als Parameter für implizite relative vertikale LineTo (v) Befehle interpretiert.

Formel:Po =Pn = {xo,yo +dy}

Beispiele

html,body,svg {  height: 100%;}
html
<svg viewBox="0 0 200 100" xmlns="http://www.w3.org/2000/svg">  <!-- LineTo commands with absolute coordinates -->  <path    fill="none"    stroke="red"    d="M 10,10           L 90,90           V 10           H 50" />  <!-- LineTo commands with relative coordinates -->  <path    fill="none"    stroke="red"    d="M 110,10           l 80,80           v -80           h -40" /></svg>

Kubische Bézierkurve

KubischeBézierkurven sind glatte Kurvendefinitionen unter Verwendung von vier Punkten:

Startpunkt (aktueller Punkt)

(Po = {xo,yo})

Endpunkt

(Pn = {xn,yn})

Startkontrollpunkt

(Pcs = {xcs,ycs})(steuert die Krümmung nahe der Kurvenstart)

Endkontrollpunkt

(Pce = {xce,yce})(steuert die Krümmung nahe der Kurvenende)

Nach dem Zeichnen wird derEndpunkt (Pn) deraktuelle Punkt für den nächsten Befehl (Po).

BefehlParameterAnmerkungen
C (x1,y1,x2,y2,x,y)+

Zeichnet eine kubische Bézierkurve vomaktuellen Punkt zumEndpunkt, der durchx,y spezifiziert ist. DerStartkontrollpunkt wird durchx1,y1 spezifiziert und derEndkontrollpunkt wird durchx2,y2 spezifiziert. Jedes nachfolgende Tripel von Koordinatenpaaren wird als Parameter für implizite absolute kubische Bézierkurve (C) Befehle interpretiert.

Formeln:
Po =Pn = {x,y} ;
Pcs = {x1,y1} ;
Pce = {x2,y2}
c (dx1,dy1,dx2,dy2,dx,dy)+

Zeichnet eine kubische Bézierkurve vomaktuellen Punkt zumEndpunkt, der deraktuelle Punkt ist, verschoben umdx entlang der x-Achse unddy entlang der y-Achse. DerStartkontrollpunkt ist deraktuelle Punkt (Anfangspunkt der Kurve) verschoben umdx1 entlang der x-Achse unddy1 entlang der y-Achse. DerEndkontrollpunkt ist deraktuelle Punkt (Anfangspunkt der Kurve) verschoben umdx2 entlang der x-Achse unddy2 entlang der y-Achse. Jedes nachfolgende Tripel von Koordinatenpaaren wird als Parameter für implizite relative kubische Bézierkurve (c) Befehle interpretiert.

Formeln:
Po =Pn = {xo +dx,yo +dy} ;
Pcs = {xo +dx1,yo +dy1} ;
Pce = {xo +dx2,yo +dy2}
S (x2,y2,x,y)+ Zeichnet eine glatte kubische Bézierkurve vomaktuellen Punkt zumEndpunkt, der durchx,y spezifiziert ist. DerEndkontrollpunkt wird durchx2,y2 spezifiziert. DerStartkontrollpunkt ist die Spiegelung desEndkontrollpunkts des vorherigen Kurvenbefehls um denaktuellen Punkt. Wenn der vorherige Befehl keine kubische Bézierkurve war, ist derStartkontrollpunkt derselbe wie der Anfangspunkt der Kurve (aktueller Punkt). Jedes nachfolgende Paar von Koordinatenpaaren wird als Parameter für implizite absolute glatte kubische Bézierkurve (S) Befehle interpretiert.
s (dx2,dy2,dx,dy)+ Zeichnet eine glatte kubische Bézierkurve vomaktuellen Punkt zumEndpunkt, der deraktuelle Punkt ist, verschoben umdx entlang der x-Achse unddy entlang der y-Achse. DerEndkontrollpunkt ist deraktuelle Punkt (Anfangspunkt der Kurve), verschoben umdx2 entlang der x-Achse unddy2 entlang der y-Achse. DerStartkontrollpunkt ist die Spiegelung desEndkontrollpunkts des vorherigen Kurvenbefehls um denaktuellen Punkt. Wenn der vorherige Befehl keine kubische Bézierkurve war, ist derStartkontrollpunkt derselbe wie der Anfangspunkt der Kurve (aktueller Punkt). Jedes nachfolgende Paar von Koordinatenpaaren wird als Parameter für implizite relative glatte kubische Bézierkurve (s) Befehle interpretiert.

Beispiele

html,body,svg {  height: 100%;}
html
<svg  viewBox="0 0 200 100"  xmlns="http://www.w3.org/2000/svg"  xmlns:xlink="http://www.w3.org/1999/xlink">  <!-- Cubic Bézier curve with absolute coordinates -->  <path    fill="none"    stroke="red"    d="M 10,90           C 30,90 25,10 50,10           S 70,90 90,90" />  <!-- Cubic Bézier curve with relative coordinates -->  <path    fill="none"    stroke="red"    d="M 110,90           c 20,0 15,-80 40,-80           s 20,80 40,80" />  <!-- Highlight the curve vertex and control points -->  <g>    <!-- First cubic command control points -->    <line x1="10" y1="90" x2="30" y2="90" stroke="lightgrey" />    <circle cx="30" cy="90" r="1.5" />    <line x1="50" y1="10" x2="25" y2="10" stroke="lightgrey" />    <circle cx="25" cy="10" r="1.5" />    <!-- Second smooth command control points (the first one is implicit) -->    <line      x1="50"      y1="10"      x2="75"      y2="10"      stroke="lightgrey"      stroke-dasharray="2" />    <circle cx="75" cy="10" r="1.5" fill="lightgrey" />    <line x1="90" y1="90" x2="70" y2="90" stroke="lightgrey" />    <circle cx="70" cy="90" r="1.5" />    <!-- curve vertex points -->    <circle cx="10" cy="90" r="1.5" />    <circle cx="50" cy="10" r="1.5" />    <circle cx="90" cy="90" r="1.5" />  </g>  <use href="#ControlPoints" x="100" /></svg>

Quadratische Bézierkurve

QuadratischeBézierkurven sind glatte Kurvendefinitionen unter Verwendung von drei Punkten:

Startpunkt (aktueller Punkt)

Po = {xo,yo}

Endpunkt

Pn = {xn,yn}

Kontrollpunkt

Pc = {xc,yc}(steuert die Krümmung)

Nach dem Zeichnen wird derEndpunkt (Pn) deraktuelle Punkt für den nächsten Befehl (Po).

BefehlParameterAnmerkungen
Q (x1,y1,x,y)+

Zeichnet eine quadratische Bézierkurve vomaktuellen Punkt zumEndpunkt, der durchx,y spezifiziert ist. DerKontrollpunkt wird durchx1,y1 spezifiziert. Jedes nachfolgende Paar von Koordinatenpaaren wird als Parameter für implizite absolute quadratische Bézierkurve (Q) Befehle interpretiert.

Formeln:
Po =Pn = {x,y} ;
Pc = {x1,y1}
q (dx1,dy1,dx,dy)+

Zeichnet eine quadratische Bézierkurve vomaktuellen Punkt zumEndpunkt, der deraktuelle Punkt ist, verschoben umdx entlang der x-Achse unddy entlang der y-Achse. DerKontrollpunkt ist deraktuelle Punkt (Anfangspunkt der Kurve) verschoben umdx1 entlang der x-Achse unddy1 entlang der y-Achse. Jedes nachfolgende Paar von Koordinatenpaaren wird als Parameter für implizite relative quadratische Bézierkurve (q) Befehle interpretiert.

Formeln:
Po =Pn = {xo +dx,yo +dy} ;
Pc = {xo +dx1,yo +dy1}
T (x,y)+

Zeichnet eine glatte quadratische Bézierkurve vomaktuellen Punkt zumEndpunkt, der durchx,y spezifiziert ist. DerKontrollpunkt ist die Spiegelung desKontrollpunktes des vorherigen Kurvenbefehls um denaktuellen Punkt. Wenn der vorherige Befehl keine quadratische Bézierkurve war, ist derKontrollpunkt derselbe wie der Anfangspunkt der Kurve (aktueller Punkt). Jedes nachfolgende Koordinatenpaar wird als Parameter für implizite absolute glatte quadratische Bézierkurve (T) Befehle interpretiert.

Formel:
Po =Pn = {x,y}
t (dx,dy)+

Zeichnet eine glatte quadratische Bézierkurve vomaktuellen Punkt zumEndpunkt, der deraktuelle Punkt ist, verschoben umdx entlang der x-Achse unddy entlang der y-Achse. DerKontrollpunkt ist die Spiegelung desKontrollpunktes des vorherigen Kurvenbefehls um denaktuellen Punkt. Wenn der vorherige Befehl keine quadratische Bézierkurve war, ist derKontrollpunkt derselbe wie der Anfangspunkt der Kurve (aktueller Punkt). Jedes nachfolgende Koordinatenpaar wird als Parameter für implizite relative glatte quadratische Bézierkurve (t) Befehle interpretiert.

Formeln:
Po =Pn = {xo +dx,yo +dy}

Beispiele

html,body,svg {  height: 100%;}
html
<svg  viewBox="0 0 200 100"  xmlns="http://www.w3.org/2000/svg"  xmlns:xlink="http://www.w3.org/1999/xlink">  <!-- Quadratic Bézier curve with implicit repetition -->  <path    fill="none"    stroke="red"    d="M 10,50           Q 25,25 40,50           t 30,0 30,0 30,0 30,0 30,0" />  <!-- Highlight the curve vertex and control points -->  <g>    <polyline      points="10,50 25,25 40,50"      stroke="rgb(0 0 0 / 20%)"      fill="none" />    <circle cx="25" cy="25" r="1.5" />    <!-- Curve vertex points -->    <circle cx="10" cy="50" r="1.5" />    <circle cx="40" cy="50" r="1.5" />    <g>      <polyline        points="40,50 55,75 70,50"        stroke="rgb(0 0 0 / 20%)"        stroke-dasharray="2"        fill="none" />      <circle cx="55" cy="75" r="1.5" fill="lightgrey" />      <circle cx="70" cy="50" r="1.5" />    </g>    <g>      <polyline        points="70,50 85,25 100,50"        stroke="rgb(0 0 0 / 20%)"        stroke-dasharray="2"        fill="none" />      <circle cx="85" cy="25" r="1.5" fill="lightgrey" />      <circle cx="100" cy="50" r="1.5" />    </g>    <use href="#SmoothQuadraticDown" x="60" />    <use href="#SmoothQuadraticUp" x="60" />    <use href="#SmoothQuadraticDown" x="120" />  </g></svg>

Elliptische Bogenkurve

Elliptische Bogenkurven sind Kurven, die als ein Teil einer Ellipse definiert werden. Manchmal ist es einfacher, hochgradig regelmäßige Kurven mit einem elliptischen Bogen zu zeichnen als mit einer Bézierkurve.

BefehlParameterAnmerkungen
A (rxryanglelarge-arc-flagsweep-flagxy)+

Zeichnet eine Bogenkurve vom aktuellen Punkt zu den Koordinatenx,y. Das Zentrum der Ellipse, die zur Zeichnung des Bogens verwendet wird, wird automatisch basierend auf den anderen Parametern des Befehls bestimmt:

  • rx undry sind die beiden Radien der Ellipse;
  • angle stellt eine Drehung (in Grad) der Ellipse relativ zur x-Achse dar;
  • large-arc-flag undsweep-flag erlauben es, auszuwählen, welcher Bogen gezeichnet werden soll, da 4 mögliche Bögen aus den anderen Parametern gezeichnet werden können.
    • large-arc-flag erlaubt es, einen der großen Bogen (1) oder kleinen Bogen (0) auszuwählen,
    • sweep-flag erlaubt es, einen der im Uhrzeigersinn drehenden Bögen (1) oder gegen den Uhrzeigersinn drehenden Bögen (0) auszuwählen.
Die Koordinatenx,y werden zum neuen aktuellen Punkt für den nächsten Befehl. Alle nachfolgenden Parametersätze werden als implizite absolute Bogenkurven (A) Befehle interpretiert.
a (rxryanglelarge-arc-flagsweep-flagdxdy)+

Zeichnet eine Bogenkurve vom aktuellen Punkt zu einem Punkt, dessen Koordinaten die des aktuellen Punktes sind, verschoben umdx entlang der x-Achse unddy entlang der y-Achse. Das Zentrum der Ellipse, die zur Zeichnung des Bogens verwendet wird, wird automatisch basierend auf den anderen Parametern des Befehls bestimmt:

  • rx undry sind die beiden Radien der Ellipse;
  • angle stellt eine Drehung (in Grad) der Ellipse relativ zur x-Achse dar;
  • large-arc-flag undsweep-flag erlauben es, auszuwählen, welcher Bogen gezeichnet werden soll, da 4 mögliche Bögen aus den anderen Parametern gezeichnet werden können.
    • large-arc-flag erlaubt die Wahl eines großen Bogens (1) oder kleinen Bogens (0),
    • sweep-flag erlaubt die Wahl eines im Uhrzeigersinn drehenden Bogens (1) oder gegen den Uhrzeigersinn drehenden Bogens (0)
Der aktuelle Punkt erhält seine X- und Y-Koordinaten, die mitdx unddy für den nächsten Befehl verschoben werden. Alle nachfolgenden Parametersätze werden als implizite relative Bogenkurven (a) Befehle interpretiert.

Beispiele

html,body,svg {  height: 100%;}
html
<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg">  <!-- The influence of the arc flags with which the arc is drawn -->  <path    fill="none"    stroke="red"    d="M 6,10           A 6 4 10 1 0 14,10" />  <path    fill="none"    stroke="lime"    d="M 6,10           A 6 4 10 1 1 14,10" />  <path    fill="none"    stroke="purple"    d="M 6,10           A 6 4 10 0 1 14,10" />  <path    fill="none"    stroke="pink"    d="M 6,10           A 6 4 10 0 0 14,10" /></svg>

ClosePath

ClosePath-Anweisungen zeichnen eine gerade Linie von deraktuellen Position zum ersten Punkt im Pfad.

BefehlParameterAnmerkungen
Z, z Schließt den aktuellen Unterpfad, indem der letzte Punkt des Pfades mit seinem Anfangspunkt verbunden wird. Wenn die beiden Punkte unterschiedliche Koordinaten haben, wird eine gerade Linie zwischen diesen beiden Punkten gezeichnet.

Hinweis:Das Erscheinungsbild einer mitClosePath geschlossenen Form kann sich von einer, die durch Zeichnen einer Linie zum Ursprung geschlossen wird, unterscheiden, wenn eine der anderen Befehle verwendet wird, weil die Linienenden zusammengefügt werden (entsprechend derstroke-linejoin-Einstellung), anstatt nur an denselben Koordinaten platziert zu werden.

Beispiele

html,body,svg {  height: 100%;}
html
<svg viewBox="0 -1 30 11" xmlns="http://www.w3.org/2000/svg">  <!--  An open shape with the last point of  the path different to the first one  -->  <path    stroke="red"    d="M 5,1           l -4,8 8,0" />  <!--  An open shape with the last point of  the path matching the first one  -->  <path    stroke="red"    d="M 15,1           l -4,8 8,0 -4,-8" />  <!--  A closed shape with the last point of  the path different to the first one  -->  <path    stroke="red"    d="M 25,1           l -4,8 8,0           z" /></svg>

Spezifikationen

Specification
Scalable Vector Graphics (SVG) 2
# DProperty
Scalable Vector Graphics (SVG) 1.1 (Second Edition)
# GlyphElementDAttribute
Scalable Vector Graphics (SVG) 1.1 (Second Edition)
# DAttribute

Browser-Kompatibilität

Siehe auch

Help improve MDN

Learn how to contribute Diese Seite wurde automatisch aus dem Englischen übersetzt.

[8]ページ先頭

©2009-2026 Movatter.jp