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

View in English Always switch to English

CSSRotate

Eingeschränkt verfügbar

Diese Funktion ist nicht Baseline, da sie in einigen der am weitesten verbreiteten Browser nicht funktioniert.

Want more browser support for this feature? Tell us why.

Hinweis: Diese Funktion ist in Web Workers verfügbar.

Die CSSRotate-Schnittstelle der CSS Typed Object Model API repräsentiert den Wert einer Rotationsfunktion in der transform-Eigenschaft in CSS.

CSSTransformComponent CSSRotate

Konstruktor

CSSRotate()

Erstellt ein neues CSSRotate-Objekt.

Instanzeigenschaften

Erbt außerdem Eigenschaften von seiner übergeordneten Schnittstelle CSSTransformComponent.

angle

Repräsentiert den Rotationswinkel.

x

Repräsentiert die x-Koordinate des Vektors der Rotationsachse.

y

Repräsentiert die y-Koordinate des Vektors der Rotationsachse.

z

Repräsentiert die z-Koordinate des Vektors der Rotationsachse.

Instanzmethoden

Erbt außerdem Methoden von seiner übergeordneten Schnittstelle CSSTransformComponent.

Beschreibung

Die CSSRotate-Schnittstelle wird verwendet, um Rotationsfunktionen in einer Liste von <transform-function>s zu repräsentieren, die für eine CSS-transform-Eigenschaft definiert sind. Dies umfasst Rotationen, die mit folgenden Funktionen deklariert werden: rotate(), rotate3d(), rotateX(), rotateY() oder rotateZ().

Die Liste selbst wird durch ein CSSTransformValue-Objekt repräsentiert, das iteriert werden kann, um die Objekte zu erhalten, die die einzelnen Funktionen repräsentieren (und möglicherweise Objekte enthält, die andere Transformationen repräsentieren).

Eine Rotation wird durch einen Achsenvektor (x, y, z) und einen angle der Rotation um diese Achse definiert. Die Konstruktorform mit 2 Argumenten ist eine Kurzform für eine Rotation um die z-Achse: Sie setzt die Achse auf (0, 0, 1). Deshalb entspricht ein 2D-CSS-rotate() rotate3d(0, 0, 1, angle). Mit der Form mit 4 Argumenten können Sie jede beliebige Achse für eine beliebige 3D-Rotation angeben.

Beispiele

Grundlegende Verwendung

Dieses Beispiel erstellt ein CSSRotate und gibt dessen Struktur und Eigenschaften im Protokoll aus.

js
const rotate = new CSSRotate(CSS.deg(45));

console.log(rotate); // CSSRotate {x: CSSUnitValue, y: CSSUnitValue, z: CSSUnitValue, angle: CSSUnitValue, is2D: true}
console.log(rotate.angle.value, rotate.angle.unit); // 45 "deg"
console.log(rotate.x.value, rotate.y.value, rotate.z.value); // 0 0 1
console.log(rotate.toString()); // "rotate(45deg)"

Erhöhen einer Rotation

Dieses Beispiel demonstriert, wie CSSRotate verwendet werden könnte.

Beachten Sie, dass es ausgeblendeten Protokollierungscode gibt, der für das Beispiel nicht relevant ist.

HTML

Zuerst definieren wir die Elemente für das zu rotierende Feld sowie die Schaltfläche, mit der wir es drehen.

html
<div id="increment-box"></div>
<button id="increment-button">Rotate 15°</button>

CSS

Das CSS für das Feld, das wir drehen werden, ist unten dargestellt. Beachten Sie, dass das Feld anfangs um 15 Grad gedreht ist.

css
#increment-box {
  width: 100px;
  height: 100px;
  margin-bottom: 1rem;
  background-color: #66d;
  transform: rotate(15deg);
  transition: transform 0.3s ease;
}

JavaScript

Der Code ruft zunächst eine Referenz auf das Feld ab, das wir drehen, und verwendet dann computedStyleMap(), um den anfänglichen Transformationswinkel abzurufen und zu protokollieren.

js
const incrementBox = document.getElementById("increment-box");

let angle = incrementBox.computedStyleMap().get("transform")[0].angle.value;
log(`initial angle: ${angle}deg`);

Anschließend rufen wir die Schaltfläche ab und fügen einen Handler hinzu, der sie bei jedem Klick auf die Schaltfläche um 15 Grad dreht. Beachten Sie, dass wir CSSRotate verwenden, um die Rotation zu definieren, sie einem CSSTransformValue hinzufügen und dieses dann als Stil für das Feld festlegen.

js
const incrementButton = document.getElementById("increment-button");
incrementButton.addEventListener("click", () => {
  angle = (angle + 15) % 360;
  const rotate = new CSSRotate(CSS.deg(angle));

  incrementBox.attributeStyleMap.set(
    "transform",
    new CSSTransformValue([rotate]),
  );
  log(`angle: ${angle}deg`);
});

Ergebnis

Dieses Beispiel beginnt mit einem Feld, das in CSS bereits um 15deg gedreht ist. Klicken Sie auf die Schaltfläche, um es zu drehen.

Spezifikationen

Spezifikation
CSS Typed OM Level 1
# cssrotate

Browser-Kompatibilität

Siehe auch