Signatur
Beschreibung
Mit orientType fragen Sie ab, welche Art von Ausrichtung ein <marker>-Element hat. Sein Attribut orient bestimmt, wie ein Marker (z. B. eine Pfeilspitze) am Anfang, in der Mitte oder am Ende eines Pfads gedreht wird. Die Eigenschaft sagt Ihnen, ob der Browser die Drehung automatisch aus der Pfadrichtung berechnet oder ob ein fester Winkel gilt.
Zurückgegeben wird ein SVGAnimatedEnumeration-Objekt mit zwei Eigenschaften:
baseVal: der Wert, der im Attribut stehtanimVal: der aktuelle Wert, falls gerade eine SMIL-Animation läuft
Beide Werte sind Zahlen und entsprechen diesen Konstanten von SVGMarkerElement:
SVG_MARKER_ORIENT_UNKNOWN(0): ein anderer Wert, z. B.auto-start-reverseaus SVG 2SVG_MARKER_ORIENT_AUTO(1):orient="auto"SVG_MARKER_ORIENT_ANGLE(2): ein Winkel, z. B.orient="45deg"oderorient="90"
Den eigentlichen Winkel liefert die Eigenschaft orientAngle. Beide Eigenschaften spiegeln dasselbe Attribut wider. Sie ändern die Ausrichtung am einfachsten mit setOrientToAuto(), setOrientToAngle() oder direkt mit setAttribute('orient', …).
Rückgabewert
baseVal und animVal. Beide sind Zahlen: 0 (unbekannt), 1 (auto) oder 2 (Winkel).Beispiele
Ausrichtungstyp eines Markers auslesen
document.body.insertAdjacentHTML('beforeend', `
<svg width="200" height="100">
<defs>
<marker id="pfeil" orient="auto" markerWidth="10" markerHeight="10" refX="5" refY="5">
<path d="M0,0 L10,5 L0,10 z" />
</marker>
</defs>
<line x1="10" y1="50" x2="180" y2="50" stroke="black" marker-end="url(#pfeil)" />
</svg>`);
const marker = document.getElementById('pfeil');
console.log(marker.orientType.baseVal);
console.log(marker.orientType.baseVal === SVGMarkerElement.SVG_MARKER_ORIENT_AUTO);
Typ lesbar ausgeben, inklusive Winkel
const beschreibeAusrichtung = (marker) => {
switch (marker.orientType.baseVal) {
case SVGMarkerElement.SVG_MARKER_ORIENT_AUTO:
return 'automatisch (folgt dem Pfad)';
case SVGMarkerElement.SVG_MARKER_ORIENT_ANGLE:
return `fester Winkel: ${marker.orientAngle.baseVal.value}°`;
default:
return `anderer Wert: ${marker.getAttribute('orient')}`;
}
};
const ns = 'http://www.w3.org/2000/svg';
const m = document.createElementNS(ns, 'marker');
m.setAttribute('orient', '45deg');
console.log(beschreibeAusrichtung(m));
m.setAttribute('orient', 'auto-start-reverse');
console.log(beschreibeAusrichtung(m));
Ausrichtung umschalten und Typ prüfen
const ns = 'http://www.w3.org/2000/svg';
const svg = document.createElementNS(ns, 'svg');
const marker = document.createElementNS(ns, 'marker');
svg.append(marker);
// Ohne orient-Attribut gilt der Standardwert 0 (ein Winkel)
console.log(marker.orientType.baseVal);
marker.setOrientToAuto();
console.log(marker.orientType.baseVal, marker.getAttribute('orient'));
const winkel = svg.createSVGAngle();
winkel.newValueSpecifiedUnits(SVGAngle.SVG_ANGLETYPE_DEG, 30);
marker.setOrientToAngle(winkel);
console.log(marker.orientType.baseVal);
// Wichtig · Fallstricke
- Nur lesend: Das Objekt, das
orientTypezurückgibt, können Sie nicht durch ein anderes ersetzen. Ändern Sie die Ausrichtung stattdessen übersetOrientToAuto(),setOrientToAngle()odersetAttribute('orient', …). - Werte aus SVG 2:
auto-start-reversehat keine eigene Konstante.orientTypeliefert dafürSVG_MARKER_ORIENT_UNKNOWN(0). Lesen Sie in diesem Fall das Attribut direkt aus. - Standardwert: Hat ein Marker kein
orient-Attribut, gilt der Winkel0.orientType.baseValist dann2(Winkel), nicht0. - Vergleiche: Vergleichen Sie mit den benannten Konstanten (z. B.
SVGMarkerElement.SVG_MARKER_ORIENT_AUTO) statt mit festen Zahlen. Das ist lesbarer. - Browser-Unterstützung: Chrome, Firefox, Safari und Edge unterstützen die Eigenschaft seit Langem. Wie Browser
auto-start-reverseauforientTypeabbilden, war in älteren Versionen teilweise uneinheitlich.