Cursor – Mauszeiger
Der Cursor (Mauszeiger) ist ein wichtiges Feedback-Element im Web. Die CSS-Eigenschaft
cursor legt fest, welches Mauszeiger-Symbol über einem Element angezeigt wird. So
signalisiert der Cursor mögliche Aktionen oder Zustände – etwa klicken, verschieben, warten oder
Text markieren.
Cursor auf einen Blick
pointer
Für Links & Buttons
help
Für Hilfe-Tooltips
crosshair
Für präzise Auswahl
wait
Anwendung beschäftigt
progress
Hintergrund-Prozess läuft
not-allowed
Aktion nicht erlaubt
text
Für Textfelder
grab
Greifbare Elemente
zoom-in
Vergrösserbar
Vordefinierte Cursor
CSS bietet vordefinierte Cursor-Werte für unterschiedliche Aktionen und Zustände.
Allgemeine Cursor
-
autoStandardwert – der Browser wählt abhängig vom Element einen passenden Cursor. -
defaultZeigt unabhängig vom Element den Standard-Pfeil. -
noneBlendet den Cursor vollständig aus.
Wichtig: auto ist der eigentliche CSS-Standardwert, nicht
default. Bei auto entscheidet der Browser abhängig vom Element;
default zeigt auch über einem Textfeld den Standard-Pfeil.
Aktionen
-
pointerHand mit ausgestrecktem Zeigefinger – für Links und klickbare Elemente. -
helpSignalisiert, dass zusätzliche Informationen oder Hilfe verfügbar sind. -
context-menuSignalisiert, dass ein Kontextmenü verfügbar ist.
pointer
Links und klickbare Elemente
help
Hilfe verfügbar
.link {
cursor: pointer;
}
.hilfe {
cursor: help;
}
.kontextmenu {
cursor: context-menu;
}
Status
-
waitDie Anwendung ist beschäftigt und die Oberfläche vorübergehend blockiert. -
progressEin Prozess läuft, die Oberfläche bleibt aber bedienbar. -
not-allowedDie gewünschte Aktion ist an dieser Stelle nicht erlaubt.
wait
Anwendung beschäftigt
progress
Prozess läuft
not-allowed
Aktion nicht erlaubt
.loading {
cursor: wait;
}
.processing {
cursor: progress;
}
button:disabled {
cursor: not-allowed;
}
Wichtig: Bei wait ist die Oberfläche vorübergehend blockiert, bei
progress bleibt sie bedienbar. Wie die Cursor aussehen, hängt vom Betriebssystem
und Browser ab.
Auswahl
-
textText kann horizontal ausgewählt werden. -
vertical-textVertikal gesetzter Text kann ausgewählt werden. -
cellEine Tabellenzelle kann ausgewählt werden. -
crosshairPräzise Auswahl, beispielsweise auf einer Zeichenfläche.
text
Text auswählen
crosshair
Präzise Auswahl
.textbereich {
cursor: text;
}
.zeichenflaeche {
cursor: crosshair;
}
Drag & Drop
-
moveDas Element kann verschoben werden. -
grabDas Element kann gegriffen werden. -
grabbingDas Element wird gerade gegriffen. -
copyBeim Ablegen wird eine Kopie erstellt. -
aliasBeim Ablegen wird eine Verknüpfung erstellt. -
no-dropDas Element kann an dieser Stelle nicht abgelegt werden. -
all-scrollDas Element kann in alle Richtungen gescrollt werden.
grab
Element greifen
copy
Kopie erstellen
move
Element verschieben
grab zu
grabbing.
.draggable {
cursor: grab;
}
.draggable:active {
cursor: grabbing;
}
Grössenänderung
Resize-Cursor zeigen, in welche Richtung ein Element vergrössert oder verkleinert werden kann.
-
n-resize/s-resizeGrössenänderung nach oben oder unten. -
e-resize/w-resizeGrössenänderung nach rechts oder links. -
ne-resize/nw-resizeDiagonale Grössenänderung nach oben. -
se-resize/sw-resizeDiagonale Grössenänderung nach unten. -
ew-resize/ns-resizeBidirektionale horizontale oder vertikale Grössenänderung. -
nesw-resize/nwse-resizeBidirektionale diagonale Grössenänderung. -
col-resize/row-resizeSpalten- oder Zeilengrösse verändern.
ew-resize
Horizontal verändern
ns-resize
Vertikal verändern
nwse-resize
Diagonal verändern
.cursor-ew-resize {
cursor: ew-resize;
}
.cursor-ns-resize {
cursor: ns-resize;
}
.cursor-nwse-resize {
cursor: nwse-resize;
}
Zoom
zoom-inDer Inhalt kann vergrössert werden.-
zoom-outDer Inhalt kann verkleinert werden.
zoom-in
Inhalt vergrössern
zoom-out
Inhalt verkleinern
.zoomable {
cursor: zoom-in;
}
.zoomable.zoomed {
cursor: zoom-out;
}
Benutzerdefinierte Cursor
Mit url() können eigene Cursor-Bilder eingebunden werden. Ein Fallback-Wert ist
dabei zwingend erforderlich.
cursor: url('custom-cursor.png'), pointer;
cursor: url('hand.cur'), grab;
cursor: url('cursor.svg'), auto;
Technische Anforderungen
PNGwird zuverlässig unterstützt,SVGundCURebenfalls in gängigen Desktop-Browsern- Empfohlene Grösse: 32 × 32 Pixel oder kleiner
- Sehr grosse Cursor-Bilder werden vom Browser möglicherweise ignoriert
- Die Hotspot-Koordinaten werden von der linken oberen Ecke aus gemessen
- Immer einen Fallback-Cursor angeben
/* Hotspot: 8 Pixel von links und oben – Fallback: crosshair */
.custom-tool {
cursor: url('precision.cur') 8 8, crosshair;
}
Beispiel: SVG als Cursor, ohne separate Bilddatei
Ein SVG lässt sich direkt als data:-URI einbetten – ohne separate Datei. Der
Hotspot
sitzt hier in der Mitte der Blüte.
.custom-cursor-box {
cursor: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24">
<circle cx="12" cy="6" r="4" fill="deeppink"/>
<circle cx="12" cy="18" r="4" fill="deeppink"/>
<circle cx="6" cy="12" r="4" fill="deeppink"/>
<circle cx="18" cy="12" r="4" fill="deeppink"/>
<circle cx="12" cy="12" r="4" fill="gold"/>
</svg>') 12 12, pointer;
}
Cursor und pointer-events
Bei pointer-events: none wird ein Element bei Zeiger-Interaktionen übersprungen.
Dadurch wird auch der auf diesem Element definierte Cursor ignoriert. Der Browser zeigt
stattdessen den Cursor des darunterliegenden Elements.
.overlay {
pointer-events: none;
cursor: default; /* bleibt wirkungslos */
}
Mehr dazu findest du in der Lektion zu CSS Pointer Events.
Best Practices
- Bekannte Cursor verwenden – Nutze standardisierte Cursor für vertraute Aktionen und Zustände.
- Cursor konsistent einsetzen – Gleichartige Elemente sollten denselben Cursor verwenden.
- Funktion nicht nur über den Cursor zeigen – Auf Touch-Geräten und bei Tastaturbedienung ist kein Mauszeiger sichtbar.
- Elemente korrekt deaktivieren –
cursor: not-allowedzeigt nur einen Zustand und ersetzt nicht das nativedisabled. - Fallback für eigene Cursor – Benutzerdefinierte Cursor benötigen immer einen passenden Standard-Cursor als Fallback.
- Eigene Cursor klein halten – Grosse oder animierte Cursor-Dateien können unzuverlässig dargestellt oder ignoriert werden.
Kurz gesagt
autoist der Standardwert;defaultzeigt unabhängig vom Element den Standard-Pfeil.- Vordefinierte Cursor signalisieren mögliche Aktionen oder den aktuellen Zustand eines Elements.
- Ein Cursor gibt nur visuelles Feedback – er fügt einem Element keine Funktion hinzu.
not-allowedzeigt eine nicht erlaubte Aktion, ersetzt aber kein nativesdisabled.- Benutzerdefinierte Cursor benötigen einen Fallback; mit Hotspot-Koordinaten wird der genaue Klickpunkt festgelegt.
- Bei
pointer-events: nonewird auch der Cursor des übersprungenen Elements ignoriert.
Weitere Interaktionen:
CSS-Outline – sichtbare Fokus-Markierungen und
Tastaturbedienung
CSS-Pointer-Events – Klicks steuern und
durchreichen