Signatur
Beschreibung
SVGAngle ist die DOM-Darstellung eines Winkels in SVG. Ein Winkel hat immer einen Zahlenwert und eine Einheit (unitType). Über die Eigenschaften können Sie den Wert in Grad lesen und setzen (value), ihn in der ursprünglich angegebenen Einheit abfragen (valueInSpecifiedUnits) oder ihn als Zeichenkette wie "45deg" bearbeiten (valueAsString).
Einen eigenen Konstruktor gibt es nicht. Sie erhalten ein SVGAngle entweder über SVGSVGElement.createSVGAngle() oder über animierbare Attribute wie SVGMarkerElement.orientAngle. Dieses liefert ein SVGAnimatedAngle, dessen baseVal und animVal selbst SVGAngle-Objekte sind.
Das Interface definiert diese Einheiten-Konstanten:
SVG_ANGLETYPE_UNKNOWN(0): unbekannte oder ungültige EinheitSVG_ANGLETYPE_UNSPECIFIED(1): Zahl ohne Einheit, wird als Grad interpretiertSVG_ANGLETYPE_DEG(2): GradSVG_ANGLETYPE_RAD(3): BogenmaßSVG_ANGLETYPE_GRAD(4): Gon (400 Gon ergeben einen Vollkreis)
Eigenschaften und Methoden:
unitType(nur lesbar): eine der Konstanten obenvalue: der Winkel immer in GradvalueInSpecifiedUnits: der Zahlenwert in der aktuellen EinheitvalueAsString: der Wert als Zeichenkette mit EinheitnewValueSpecifiedUnits(unitType, value): setzt Einheit und Wert gleichzeitigconvertToSpecifiedUnits(unitType): rechnet in eine andere Einheit um, ohne den Winkel selbst zu ändern
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $unitType Pflicht | number | Parameter von newValueSpecifiedUnits() und convertToSpecifiedUnits(): eine der Konstanten SVGAngle.SVG_ANGLETYPE_* (1–4). |
|
| $valueInSpecifiedUnits Pflicht | number | Zweiter Parameter von newValueSpecifiedUnits(): der Zahlenwert in der gewählten Einheit. |
Rückgabewert
undefined zurück und verändern das Objekt direkt.Beispiele
Winkel erzeugen und in Bogenmaß umrechnen
const svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');
const angle = svg.createSVGAngle();
// 90 Grad setzen
angle.newValueSpecifiedUnits(SVGAngle.SVG_ANGLETYPE_DEG, 90);
console.log(angle.value, angle.valueAsString);
// In Bogenmaß umrechnen
angle.convertToSpecifiedUnits(SVGAngle.SVG_ANGLETYPE_RAD);
console.log(angle.unitType === SVGAngle.SVG_ANGLETYPE_RAD);
console.log(angle.valueInSpecifiedUnits.toFixed(4));
console.log(angle.value); // bleibt in Grad
Ausrichtung eines Markers über orientAngle lesen
const ns = 'http://www.w3.org/2000/svg';
const marker = document.createElementNS(ns, 'marker');
marker.setAttribute('orient', '100grad');
const base = marker.orientAngle.baseVal; // SVGAngle
console.log(base.unitType === SVGAngle.SVG_ANGLETYPE_GRAD);
console.log(base.valueInSpecifiedUnits); // 100
console.log(base.value); // in Grad
Winkel per Zeichenkette setzen und das Attribut synchronisieren
const ns = 'http://www.w3.org/2000/svg';
const marker = document.createElementNS(ns, 'marker');
marker.setAttribute('orient', '0');
const angle = marker.orientAngle.baseVal;
angle.valueAsString = '0.5rad';
// Die Änderung wird ins Attribut zurückgeschrieben
console.log(marker.getAttribute('orient'));
// Über value wird immer in Grad gesetzt
angle.value = 45;
console.log(angle.valueAsString);
// Wichtig · Fallstricke
- Kein Konstruktor:
new SVGAngle()wirft einenTypeError. Verwenden Sie stattdessensvgElement.createSVGAngle(). valueist immer in Grad, auch wenn die Einheitradodergradist. Brauchen Sie den Rohwert in der angegebenen Einheit, lesen SievalueInSpecifiedUnits.- Die Einheit
turnwird nicht unterstützt. Ungültige Zeichenketten invalueAsStringlösen einenSyntaxErroraus. WirdSVG_ANGLETYPE_UNKNOWNan die Methoden übergeben, gibt es einenNotSupportedError. animValist schreibgeschützt. Schreibzugriffe auforientAngle.animValwerfen einenNoModificationAllowedError. Ändern Sie immerbaseVal.orient="auto"bzw.auto-start-reverse: Hier istorientAngle.baseVal0. Den eigentlichen Modus lesen Sie überorientType.- Browser-Unterstützung: Das Interface wird in allen modernen Browsern unterstützt. Wie Werte nach einer Änderung von
valueserialisiert werden, unterscheidet sich jedoch leicht zwischen den Browsern.