React Icons drehen: Ein Leitfaden

Rating: 4.26 (6875 votes)

In der modernen Webentwicklung sind Icons unverzichtbare Elemente für eine intuitive und ansprechende Benutzeroberfläche. Sie signalisieren Aktionen, Zustände oder Kategorien auf einen Blick. Manchmal reicht es jedoch nicht aus, ein Icon einfach nur anzuzeigen. Um Interaktionen hervorzuheben, Ladevorgänge zu visualisieren oder einfach nur visuelles Flair hinzuzufügen, ist es oft wünschenswert, Icons zu drehen. Besonders im Kontext von React-Anwendungen, wo Komponenten und dynamische Zustände eine große Rolle spielen, stellt sich die Frage: Wie dreht man React-Symbole effektiv?

Es gibt verschiedene Ansätze, um dieses Ziel zu erreichen, die sich hinsichtlich ihrer Komplexität, Flexibilität und Anwendungsfälle unterscheiden. Die gängigsten Methoden basieren auf CSS, das die grundlegenden Werkzeuge für Transformationen und Animationen bietet, oder nutzen spezifische Features von Icon-Bibliotheken. In diesem Artikel tauchen wir tief in diese Methoden ein und zeigen Ihnen, wie Sie Ihre React-Icons nach Belieben drehen können.

Wie drehe ich React-Symbole?
Um Symbole beliebig zu drehen und zu spiegeln, verwenden Sie die Klassen fa-rotate-* und fa-flip-* .

Grundlagen der Icon-Drehung mit CSS

Die primäre Technologie, um Elemente im Web zu drehen, ist CSS. CSS bietet leistungsstarke Transformationen, mit denen Sie die Position, Skalierung, Schiebung und eben auch die Drehung von Elementen steuern können. Für die Drehung ist insbesondere die transform-Eigenschaft in Verbindung mit der Funktion rotate() relevant.

Statische Drehung mit CSS Transform

Die einfachste Form der Drehung ist eine statische Drehung um einen festen Winkel. Dies ist nützlich, um ein Icon dauerhaft in einer anderen Ausrichtung anzuzeigen, z. B. einen Pfeil, der nach oben statt nach unten zeigt, oder ein Einstellungszahnrad, das leicht gekippt ist.

Die CSS-Eigenschaft lautet transform: rotate(<winkel>);. Der Winkel kann in verschiedenen Einheiten angegeben werden, am häufigsten in Grad (deg). Ein positiver Wert dreht das Element im Uhrzeigersinn, ein negativer Wert gegen den Uhrzeigersinn.

In einer React-Komponente können Sie diese CSS-Regel auf verschiedene Arten anwenden:

1. Inline-Styles

Inline-Styles sind direkt im JSX-Element definiert. Dies ist nützlich für einfache, dynamisch berechnete Stile, aber für komplexe Stile oder Animationen weniger geeignet.

import React from 'react'; import { FaCog } from 'react-icons/fa'; // Beispiel: React Icons import './IconKomponente.css'; // Optional für andere Stile function GekipptesZahnrad() { const style = { transform: 'rotate(45deg)' }; return ( <div> <FaCog style={style} size={30} /> </div> ); } export default GekipptesZahnrad; 

Hier wird ein Zahnrad-Icon um 45 Grad im Uhrzeigersinn gedreht. Der Stil wird direkt als JavaScript-Objekt an das style-Prop übergeben.

2. CSS-Klassen (CSS-Module oder Standard CSS)

Eine sauberere Methode ist die Definition einer CSS-Klasse und deren Anwendung auf das Icon-Element. Dies fördert die Wiederverwendbarkeit und hält den Stil vom JSX getrennt.

Erstellen Sie eine CSS-Datei (z. B. IconStyles.module.css bei Verwendung von CSS-Modulen oder einfach IconStyles.css):

/* IconStyles.module.css oder IconStyles.css */ .gedrehtesIcon { transform: rotate(90deg); display: inline-block; /* Wichtig für die Drehung inline-Elementen */ } 

Wenden Sie die Klasse in Ihrer React-Komponente an:

import React from 'react'; import { FaArrowRight } from 'react-icons/fa'; // Beispiel: React Icons import styles from './IconStyles.module.css'; // Bei CSS-Modulen import './IconStyles.css'; // Bei Standard CSS function GedrehterPfeil() { return ( <div> <FaArrowRight className={styles.gedrehtesIcon} size={30} /> { /* Oder className="gedrehtesIcon" bei Standard CSS */ } </div> ); } export default GedrehterPfeil; 

Die CSS-Klassen-Methode ist oft vorzuziehen, da sie Styles besser organisiert und wartbarer macht. Achten Sie darauf, dass das gedrehte Element ein Block- oder Inline-Block-Element ist (wie im CSS-Beispiel mit display: inline-block;), da transform bei reinen Inline-Elementen manchmal unerwartetes Verhalten zeigen kann, insbesondere wenn andere Transformationen im Spiel sind.

3. Styled Components oder andere CSS-in-JS-Bibliotheken

Wenn Sie eine CSS-in-JS-Bibliothek wie Styled Components verwenden, können Sie Stile direkt mit JavaScript definieren und Komponenten erstellen, die diese Stile enthalten.

import React from 'react'; import styled from 'styled-components'; import { FaStar } from 'react-icons/fa'; // Beispiel: React Icons const GedrehteSternKomponente = styled(FaStar)` transform: rotate(-30deg); display: inline-block; `; function GedrehterStern() { return ( <div> <GedrehteSternKomponente size={30} /> </div> ); } export default GedrehterStern; 

Diese Methode bietet die Vorteile von Komponenten-basierten Stilen und ermöglicht dynamische Stile basierend auf Props.

Bei all diesen Methoden dreht sich das Element standardmäßig um seinen Mittelpunkt. Sie können den Drehpunkt mit der CSS-Eigenschaft transform-origin ändern, z. B. transform-origin: top left; um es um die obere linke Ecke zu drehen.

Dynamische Drehung mit State und CSS

Oft möchten Sie ein Icon nicht nur statisch drehen, sondern die Drehung basierend auf einem Benutzerereignis oder einem Anwendungszustand ändern. Ein klassisches Beispiel ist ein Chevron-Icon (< oder >), das sich dreht, wenn ein Akkordeon-Element geöffnet oder geschlossen wird.

In React erreichen Sie dies, indem Sie den Zustand der Drehung im Komponenten-State speichern und dann die entsprechende CSS-Klasse oder den Inline-Style basierend auf diesem Zustand anwenden.

import React, { useState } from 'react'; import { FaChevronDown } from 'react-icons/fa'; // Beispiel: React Icons import './DynamischesIcon.css'; // CSS-Datei für die Drehung function KlappbaresElement() { const [istGeöffnet, setIstGeöffnet] = useState(false); const handleKlick = () => { setIstGeöffnet(!istGeöffnet); }; return ( <div> <button onClick={handleKlick}> Titel des Elements <FaChevronDown className={istGeöffnet ? 'chevron-gedreht': 'chevron-normal'} size={20} /> </button> {istGeöffnet && ( <div><p>Inhalt des klappbaren Elements.</p></div> )} </div> ); } export default KlappbaresElement; 

Die zugehörige CSS-Datei (DynamischesIcon.css):

/* DynamischesIcon.css */ .chevron-normal { transform: rotate(0deg); transition: transform 0.3s ease-in-out; /* Für sanfte Animation */ display: inline-block; } .chevron-gedreht { transform: rotate(180deg); transition: transform 0.3s ease-in-out; /* Für sanfte Animation */ display: inline-block; } button { display: flex; align-items: center; cursor: pointer; } button > svg { margin-left: 10px; } 

In diesem Beispiel verwenden wir den useState-Hook, um den Zustand istGeöffnet zu verwalten. Basierend auf diesem Zustand wird entweder die Klasse chevron-normal oder chevron-gedreht angewendet. Die CSS-transition-Eigenschaft sorgt dafür, dass die Drehung nicht abrupt erfolgt, sondern sanft animiert wird, was zu einer besseren Benutzererfahrung führt. Dies ist ein sehr gebräuchliches Muster für interaktive Icons.

Animationen: Icons kontinuierlich drehen

Für Anwendungsfälle wie Ladeindikatoren oder sich drehende Zahnräder ist eine kontinuierliche Animation erforderlich. Dies wird am besten mit CSS-Animationen und der @keyframes-Regel realisiert.

Zuerst definieren Sie die @keyframes-Regel, die beschreibt, wie sich das Element über die Zeit verändern soll:

/* In Ihrer CSS-Datei */ @keyframes dreheMich { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } } 

Diese Regel definiert eine Animation namens dreheMich, die bei 0% der Animationsdauer eine Drehung von 0 Grad und bei 100% der Dauer eine Drehung von 360 Grad hat.

Dann wenden Sie diese Animation mit der CSS-Eigenschaft animation auf das Icon-Element an. Die animation-Eigenschaft ist eine Kurzform für mehrere Animationseigenschaften, darunter animation-name, animation-duration, animation-timing-function, animation-delay, animation-iteration-count, animation-direction, animation-fill-mode und animation-play-state.

Für eine kontinuierliche Drehung benötigen Sie mindestens den Namen der Animation, die Dauer und die Iterationsanzahl, die auf infinite gesetzt wird.

Wie drehe ich React-Symbole?
Um Symbole beliebig zu drehen und zu spiegeln, verwenden Sie die Klassen fa-rotate-* und fa-flip-* .
/* In Ihrer CSS-Datei */ .ladeIcon { animation: dreheMich 2s linear infinite; /* Name Dauer Timing-Funktion Iterationen */ display: inline-block; } 

2s ist die Dauer einer vollen Drehung (2 Sekunden). linear bedeutet, dass die Animation mit konstanter Geschwindigkeit abläuft. infinite bedeutet, dass die Animation unendlich oft wiederholt wird.

Anwendung in Ihrer React-Komponente (ähnlich wie bei statischen Klassen):

import React from 'react'; import { FaSpinner } from 'react-icons/fa'; // Beispiel: React Icons import './AnimationStyles.css'; // CSS-Datei mit @keyframes und .ladeIcon function LadeIndikator() { return ( <div> <FaSpinner className="ladeIcon" size={30} /> <p>Wird geladen...</p> </div> ); } export default LadeIndikator; 

Diese Methode ist ideal für visuelle Indikatoren, die eine fortlaufende Bewegung erfordern. Sie können die Dauer und die Timing-Funktion anpassen, um die Geschwindigkeit und das Gefühl der Drehung zu ändern.

Drehung mit Icon-Bibliotheken

Viele beliebte React-Icon-Bibliotheken bieten eingebaute Funktionen oder Props, um Icons einfach zu drehen, insbesondere für gängige Anwendungsfälle wie das Drehen für Ladeindikatoren.

Beispielsweise bietet die sehr populäre Bibliothek react-icons selbst keine spezifischen Drehen-Props für *alle* Icons, da sie nur Wrapper für Icons aus verschiedenen Quellen sind. Sie müssen hier in der Regel die oben beschriebenen CSS-Methoden anwenden.

Andere Bibliotheken, die auf bestimmten Icon-Sets basieren, wie @fortawesome/react-fontawesome für Font Awesome Icons, haben oft spezielle Props.

Mit @fortawesome/react-fontawesome können Sie beispielsweise das spin-Prop für eine kontinuierliche Drehung oder das rotation-Prop für eine Drehung in Schritten von 90, 180 oder 270 Grad verwenden.

import React from 'react'; import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import { faSync, faCog } from '@fortawesome/free-solid-svg-icons'; function FontAwesomeBeispiele() { return ( <div> <p>Lade-Icon (Spinning):</p> <FontAwesomeIcon icon={faSync} spin size="2x" /> <p>Zahnrad (180 Grad gedreht):</p> <FontAwesomeIcon icon={faCog} rotation={180} size="2x" /> </div> ); } export default FontAwesomeBeispiele; 

Die Verwendung von Bibliotheks-Props ist oft der einfachste Weg, wenn die Bibliothek dies unterstützt und die angebotenen Optionen Ihren Anforderungen entsprechen (z. B. eine einfache kontinuierliche Drehung oder feste Winkel). Wenn Sie jedoch eine benutzerdefinierte Geschwindigkeit, eine andere Timing-Funktion oder eine Drehung um einen spezifischen, nicht vordefinierten Winkel benötigen, bieten die reinen CSS-Methoden mehr Flexibilität.

Vergleich der Methoden

Die Wahl der Methode hängt stark von Ihrem spezifischen Anwendungsfall ab. Hier ist eine Vergleichstabelle, die Ihnen bei der Entscheidung helfen kann:

MethodeStatische DrehungDynamische Drehung (zustandsbasiert)Animation (kontinuierlich/mehrere Schritte)FlexibilitätAbhängigkeiten
CSS Transform (Statisch)JaNein (nur über Klassenwechsel)NeinMittel (nur Winkel, Drehpunkt)Keine (Standard CSS)
CSS Transform (Dynamisch via State/Klassen)JaJaNeinMittel (Winkel, Drehpunkt, Transition)Keine (Standard CSS)
CSS Animation (@keyframes)Nein (basiert auf Zeit)Ja (Start/Stop Animation via State/Klassen)JaHoch (Geschwindigkeit, Timing, Wiederholung, mehrere Schritte)Keine (Standard CSS)
Bibliotheks-Props (falls vorhanden)Ja (oft nur feste Winkel)Manchmal (abhängig von Bibliothek/Prop)Manchmal (oft nur "spin")Gering bis Mittel (begrenzt auf angebotene Props)Bibliothek

Für einfache statische Drehungen oder dynamische Drehungen basierend auf einem Zustand (wie das Aufklappen eines Elements) ist die CSS-Transform-Methode mit Klassenwechseln oft am besten geeignet. Für fortlaufende Animationen ist CSS Animation mit @keyframes der Standardansatz. Wenn Ihre Icon-Bibliothek eine praktische Prop für den gewünschten Effekt bietet (wie das spin-Prop bei Font Awesome), kann dies der schnellste Weg sein, birgt aber eine Abhängigkeit von den Features der Bibliothek.

Best Practices und Überlegungen

Bei der Implementierung von Icon-Drehungen, insbesondere von Animationen, sollten Sie einige Dinge beachten:

  • Performance: CSS-Transformationen und -Animationen werden in der Regel von der GPU beschleunigt und sind daher performant. Achten Sie jedoch darauf, nicht zu viele komplexe Animationen gleichzeitig laufen zu lassen, insbesondere auf leistungsschwächeren Geräten.
  • Zugänglichkeit: Kontinuierliche Animationen können für Personen mit Vestibularstörungen oder Motion Sickness problematisch sein. Bieten Sie Benutzern, falls möglich, eine Option, Animationen zu reduzieren oder zu deaktivieren. Sie können die CSS Media Query @media (prefers-reduced-motion: reduce) verwenden, um Animationen für Benutzer, die dies in ihren Systemeinstellungen festgelegt haben, zu deaktivieren oder zu vereinfachen.
  • Drehpunkt: Standardmäßig drehen sich Elemente um ihren Mittelpunkt (transform-origin: center center;). Wenn Sie möchten, dass sich das Icon um eine andere Achse oder einen anderen Punkt dreht, verwenden Sie die Eigenschaft transform-origin.
  • Icon-Typ: Die Methoden funktionieren prinzipiell für verschiedene Arten von Icons (SVG, Icon Fonts). Bei SVG-Icons stellen Sie sicher, dass die Transformation auf das SVG-Element selbst oder einen umschließenden Container angewendet wird.

Häufig gestellte Fragen (FAQs)

Hier beantworten wir einige häufige Fragen zur Drehung von React-Icons:

Wie lasse ich ein Icon unendlich drehen?

Verwenden Sie CSS-Animationen mit der @keyframes-Regel. Definieren Sie eine Animation, die von 0 Grad zu 360 Grad geht und wenden Sie sie mit animation: <name> <dauer> linear infinite; auf das Icon an. Das infinite-Schlüsselwort sorgt für die Endlosschleife.

Wie drehe ich ein Icon, wenn ich mit der Maus darüberfahre (Hover)?

Nutzen Sie die CSS-Pseudo-Klasse :hover. Definieren Sie eine Regel für das Icon oder seinen Container, die bei :hover die transform: rotate(<winkel>);-Eigenschaft anwendet. Fügen Sie eine transition-Eigenschaft hinzu, um die Drehung sanft zu animieren.

.meinIcon:hover { transform: rotate(180deg); } .meinIcon { transition: transform 0.4s ease; display: inline-block; } 

Wie drehe ich ein Icon, wenn ich darauf klicke?

Verwenden Sie den React-State (z. B. mit useState), um zu verfolgen, ob das Icon gedreht werden soll. Fügen Sie einen onClick-Handler hinzu, der den State umschaltet. Wenden Sie dann basierend auf dem State eine CSS-Klasse an, die die transform: rotate()-Eigenschaft enthält, oder verwenden Sie einen dynamischen Inline-Style.

Kann ich die Geschwindigkeit der Drehung steuern?

Ja, bei CSS-Animationen steuern Sie die Geschwindigkeit über die animation-duration-Eigenschaft (z. B. 2s für 2 Sekunden pro Umdrehung). Bei dynamischen Drehungen mit CSS-Transformationen steuern Sie die Geschwindigkeit der *Transition* über die transition-duration-Eigenschaft.

Muss ich eine spezielle Bibliothek verwenden, um Icons zu drehen?

Nein, die grundlegenden Methoden mit reinem CSS funktionieren mit jedem Icon-Element, unabhängig davon, wie es in React eingebunden ist (SVG, Font-Icon etc.). Bibliotheken können Komfort-Props bieten, sind aber keine Voraussetzung für die Drehung selbst.

Wie drehe ich ein Icon um einen anderen Punkt als die Mitte?

Verwenden Sie die CSS-Eigenschaft transform-origin. Standardmäßig ist sie auf center center gesetzt. Sie können Werte wie top left, 20px 50% oder andere relative/absolute Angaben verwenden, um den Drehpunkt festzulegen.

Fazit

Das Drehen von React-Icons ist eine gängige Anforderung, die mit verschiedenen Techniken gelöst werden kann. Ob Sie eine statische Ausrichtung ändern, ein Icon basierend auf Benutzerinteraktionen drehen oder eine fortlaufende Animation für einen Ladeindikator erstellen möchten – CSS bietet die notwendigen Werkzeuge. Die Wahl zwischen Inline-Styles, CSS-Modulen, CSS-in-JS oder Bibliotheks-Props hängt von Ihren Projektanforderungen, Ihrem bevorzugten Styling-Ansatz und der Komplexität der gewünschten Drehung ab.

Durch die Kombination von Reacts State-Management mit den leistungsstarken CSS-Transformations- und Animationsfunktionen können Sie dynamische und ansprechende visuelle Effekte für Ihre Icons erstellen, die die Benutzererfahrung Ihrer Anwendung deutlich verbessern. Achten Sie dabei stets auf Performance und Zugänglichkeit, um sicherzustellen, dass Ihre gedrehten Icons für alle Benutzer eine Bereicherung darstellen.

Hat dich der Artikel React Icons drehen: Ein Leitfaden interessiert? Schau auch in die Kategorie Ogólny rein – dort findest du mehr ähnliche Inhalte!

Avatar photo

Andenmatten Soltermann

Hallo! Ich bin Andenmatten Soltermann, ein Schweizer Fotograf, der leidenschaftlich die Essenz der Welt durch seine Linse einfängt. Geboren und aufgewachsen in den majestätischen Schweizer Alpen, haben die deutsche Sprache und atemberaubende Landschaften meine kreative Vision geprägt. Meine Liebe zur Fotografie begann mit einer alten analogen Kamera, und seitdem widme ich mein Leben der Kunst, visuelle Geschichten zu erzählen, die berühren und verbinden.In meinem Blog teile ich praktische Tipps, Techniken und Erfahrungen, um dir zu helfen, deine fotografischen Fähigkeiten zu verbessern – egal, ob du ein neugieriger Anfänger oder ein erfahrener Profi bist. Von der Beherrschung des natürlichen Lichts bis hin zu Ratschlägen für wirkungsvolle Bildkompositionen ist es mein Ziel, dich zu inspirieren, die Welt mit neuen Augen zu sehen. Mein Ansatz verbindet Technik mit Leidenschaft, immer auf der Suche nach dem Funken, der ein Foto unvergesslich macht.Wenn ich nicht hinter der Kamera stehe, findest du mich auf Bergpfaden, auf Reisen nach neuen Perspektiven oder beim Genießen der Schweizer Traditionen, die mir so am Herzen liegen. Begleite mich auf dieser visuellen Reise und entdecke, wie Fotografie die Art und Weise, wie du die Welt siehst, verändern kann.

Go up