Menu

CSS drehen: rotate(), die Eigenschaft rotate und Rotation

Dreh ein Element mit transform: rotate(45deg) oder der neueren Eigenschaft rotate. Hier lernst du Winkeleinheiten (deg, turn, rad), das Drehen um eine Ecke mit transform-origin, gedrehten Text und Icons, eine sich drehende Ladeanzeige und 3D-Drehung mit rotateX und rotateY.

Diese Seite enthält ausführbare Editoren - bearbeiten, ausführen und Ausgabe sofort sehen.

Ein Element drehen

Zwei Wege, dasselbe Ergebnis: die Funktion rotate() in transform oder die Eigenschaft rotate für sich. Positive Winkel drehen im Uhrzeigersinn:

Die blaue und die grüne Box sind genau gleich gedreht, 45 Grad im Uhrzeigersinn um ihre Mitte. Die bernsteinfarbene Box hat einen negativen Winkel und neigt sich deshalb gegen den Uhrzeigersinn. Eine Drehung verschiebt nie das Layout: Jede Box belegt weiterhin ihren ursprünglichen Platz von 90 mal 60, und deshalb können gedrehte Elemente ihre Nachbarn überlappen.

Winkeleinheiten

EinheitVoller Kreis90 Grad
deg360deg90deg
turn1turn0.25turn
rad6.2832rad1.5708rad
grad400grad100grad

deg ist die übliche Wahl; turn liest sich gut für Rotation (rotate: 1turn). Winkel über 360 sind erlaubt und spielen in Animationen eine Rolle: rotate(720deg) in einem Keyframe dreht zweimal. Schreib immer die Einheit dazu: rotate(45) ist ungültig und wird ignoriert.

Zieh am Schieberegler, um einen Winkel in jeder Einheit zu sehen:

Um eine Ecke drehen: transform-origin

Ein Element dreht sich standardmäßig um seine Mitte. transform-origin verlegt den Drehpunkt. Ein Uhrzeiger dreht sich um sein Ende, nicht um seine Mitte:

Das untere Ende des Zeigers sitzt auf dem bernsteinfarbenen Stift in der Mitte des Zifferblatts, und rotate: 120deg dreht ihn auf vier Uhr. Entferne die Zeile mit transform-origin, und der Zeiger dreht sich stattdessen um seine eigene Mitte, neben dem Stift.

Text drehen und senkrechte Labels

Eine kleine Neigung mit rotate passt für ein Badge oder einen Sticker. Für ein wirklich senkrechtes Label ist writing-mode besser, weil es das Layout ändert: Das Element wird hoch und schmal, statt zu überlappen, was daneben steht.

Die Anzeige zeigt die Layoutgröße jedes Labels. Das gedrehte belegt weiterhin seine ursprüngliche breite, niedrige Box: Es lässt daneben eine leere Lücke und ragt über und unter seine Zeile hinaus, in das hinein, was dort steht. Das Label mit writing-mode belegt eine hohe, schmale Box. Mit rotate: 180deg liest es sich von unten nach oben, die übliche Richtung für ein senkrechtes Label.

Ein Icon bei Klick oder Hover drehen

Einen Pfeil um 180 Grad zu drehen, ist der Standardweg zu zeigen, dass ein Abschnitt offen ist. Kombiniere rotate mit einer Transition:

Der Winkelpfeil ist ein Quadrat mit zwei Rahmen, um 45 Grad gedreht, damit er nach unten zeigt. Ist der Button aufgeklappt, geht er auf 225 Grad und zeigt nach oben, und die Transition animiert die halbe Drehung. Das Attribut aria-expanded steuert den Style, also können der sichtbare Zustand und der Zustand, den Screenreader ansagen, nie auseinanderlaufen.

Eine rotierende Ladeanzeige

Eine Rotation ist eine Drehung von 0 bis 360 Grad, wiederholt mit linear-Timing, damit sich die Geschwindigkeit nie ändert:

Mit nur einem to-Keyframe startet die Animation bei der eigenen Drehung des Elements (keine) und endet bei 360deg, und infinite wiederholt sie ohne Sprung, weil 360deg genauso aussieht wie 0. Für Menschen, die ihr System um reduzierte Bewegung gebeten haben, dreht sich die Anzeige dreimal langsamer. Mehr zu Keyframes auf der Seite zu Animation.

3D-Drehung: rotateX, rotateY

rotateX() kippt ein Element um die horizontale Achse nach hinten, und rotateY() dreht es um die senkrechte Achse, wie eine Tür. Ohne Perspektive sehen sie nur gestaucht aus; perspective am Elternelement bringt Tiefe:

.scene { perspective: 600px; }
.card  { transform: rotateY(35deg); }
.flip  { transform: rotateY(180deg); backface-visibility: hidden; } /* card flip */

Um ein Element zu spiegeln statt zu drehen, nimm scale: -1 1 (horizontal gespiegelt). Eine Drehung um 180 Grad stellt es auf den Kopf, und das ist nicht dasselbe.

Häufige Fehler

  • Ein <span> oder <a> drehen, das sich nicht bewegt. Einfache Inline-Elemente ignorieren Transforms. Füge display: inline-block hinzu.
  • Eine Drehung, die beim Hovern verschwindet. Eine Hover-Regel mit transform: scale(1.1) ersetzt transform: rotate(...). Nimm die eigenständigen Eigenschaften rotate und scale oder liste beide Funktionen auf.
  • Erwarten, dass das Layout Platz macht. Ein gedrehtes Bild behält seine ungedrehte Box und überlappt seine Nachbarn. Gib dem Container die gedrehte Größe oder nimm für Text writing-mode.
  • Ladeanzeigen mit ease. Das Standard-Timing beschleunigt und bremst bei jeder Umdrehung. Nimm linear.
  • Um den falschen Punkt drehen. Setz transform-origin, bevor du den Winkel feinjustierst.

Häufig gestellte Fragen

Wie dreht man ein Element in CSS?

Mit transform: rotate(45deg); oder der eigenständigen Eigenschaft rotate: 45deg;. Positive Winkel drehen im Uhrzeigersinn und negative gegen den Uhrzeigersinn, um die Mitte des Elements, außer du änderst transform-origin.

Was ist der Unterschied zwischen transform: rotate() und der Eigenschaft rotate?

Sie zeichnen dasselbe Ergebnis. Die Eigenschaft rotate ist unabhängig von transform, also kann eine Hover-Regel scale oder translate ändern, ohne die Drehung zu entfernen, und jede kann ihre eigene Transition haben. Zusammen wirken sie wie transform: translate() rotate() scale(), egal in welcher Reihenfolge du sie deklarierst.

Wie drehe ich ein Bild in CSS um 90 Grad?

Füge dem img transform: rotate(90deg); (oder rotate: 90deg;) hinzu. Das Bild behält seinen ursprünglichen Platz im Layout, also kann ein hohes Bild, das ins Querformat gedreht wird, seine Nachbarn überlappen; gib seinem Container Platz für die gedrehte Größe.

Wie lasse ich ein Element in CSS rotieren?

Leg @keyframes spin { to { rotate: 360deg; } } fest und wende animation: spin 1s linear infinite; an. Nimm linear, damit die Geschwindigkeit konstant bleibt, und mach es unter prefers-reduced-motion: reduce langsamer oder halte es an.

Wie drehe ich Text in CSS senkrecht?

Für ein senkrechtes Label ist writing-mode: vertical-rl meist besser als rotate(90deg), weil es auch das Layout ändert: Das Element nimmt senkrechten Platz ein, statt zu überlappen. Nimm rotate für kleine dekorative Neigungen.

Coddy programming languages illustration

Lerne mit Coddy zu programmieren

LOS GEHT'S