Element: wheel event
Limited availability
This feature is not Baseline because it does not work in some of the most widely-used browsers.
Das wheel-Ereignis wird ausgelöst, wenn der Benutzer eine Rad-Taste auf einem Zeigegerät (typischerweise eine Maus) dreht. Es wird auch für verwandte Geräte ausgelöst, die Radaktionen simulieren, wie Trackpads und Mausballen.
Dieses Ereignis ersetzt das nicht standardmäßige veraltete mousewheel-Ereignis.
Verwechseln Sie das wheel-Ereignis nicht mit dem scroll-Ereignis:
- Ein
wheel-Ereignis löst nicht unbedingt einscroll-Ereignis aus. Zum Beispiel könnte das Element überhaupt nicht scrollbar sein. Auch Zoom-Aktionen, die das Rad oder das Trackpad nutzen, lösenwheel-Ereignisse aus (mitctrlKeyauf true gesetzt). - Ein
scroll-Ereignis wird nicht unbedingt durch einwheel-Ereignis ausgelöst. Elemente können auch durch die Tastatur, das Ziehen eines Scrollbalkens oder durch JavaScript gescrollt werden. - Selbst wenn das
wheel-Ereignis Scrollen auslöst, spiegeln diedelta*-Werte imwheel-Ereignis nicht unbedingt die Scrollrichtung des Inhalts wider.
Verlassen Sie sich daher nicht auf die delta*-Eigenschaften des wheel-Ereignisses, um die Scrollrichtung zu bestimmen. Stattdessen sollten Sie Wertänderungen von scrollLeft und scrollTop des Ziels im scroll-Ereignis erkennen.
Das wheel-Ereignis ist abbruchsicher. In einigen Browsern ist nur das erste wheel-Ereignis in einer Sequenz abbruchsicher, und spätere Ereignisse sind nicht abbruchsicher. Wenn das Ereignis abgebrochen wird, wird weder gescrollt noch gezoomt. Dies kann Leistungsprobleme verursachen, da der Browser warten muss, bis jedes Wheel-Ereignis verarbeitet wurde, bevor der Inhalt tatsächlich gescrollt wird. Sie können dies vermeiden, indem Sie passive: true verwenden, wenn Sie addEventListener() aufrufen, was dazu führen kann, dass der Browser nicht abbrechbare wheel-Ereignisse generiert.
Syntax
Verwenden Sie den Ereignisnamen in Methoden wie addEventListener(), oder setzen Sie eine Ereignishandler-Eigenschaft.
addEventListener("wheel", (event) => { })
onwheel = (event) => { }
Ereignistyp
Ein WheelEvent. Erbt von MouseEvent, UIEvent und Event.
Ereigniseigenschaften
Dieses Interface erbt Eigenschaften von seinen Vorfahren, MouseEvent, UIEvent, und Event.
WheelEvent.deltaXSchreibgeschützt-
Gibt einen
doublezurück, der die horizontale Scrollmenge darstellt. WheelEvent.deltaYSchreibgeschützt-
Gibt einen
doublezurück, der die vertikale Scrollmenge darstellt. WheelEvent.deltaZSchreibgeschützt-
Gibt einen
doublezurück, der die Scrollmenge für die z-Achse darstellt. WheelEvent.deltaModeSchreibgeschützt-
Gibt ein
unsigned longzurück, das die Einheit des Scrollbetrags vondelta*angibt. Erlaubte Werte sind:Konstante Wert Beschreibung WheelEvent.DOM_DELTA_PIXEL0x00Die delta*-Werte sind in Pixeln angegeben.WheelEvent.DOM_DELTA_LINE0x01Die delta*-Werte sind in Zeilen angegeben. Jeder Mausklick scrollt eine Zeile Inhalt, wobei die Methode zur Berechnung der Zeilenhöhe vom Browser abhängig ist.WheelEvent.DOM_DELTA_PAGE0x02Die delta*-Werte sind in Seiten angegeben. Jeder Mausklick scrollt eine Seite Inhalt. WheelEvent.wheelDeltaSchreibgeschützt Veraltet-
Gibt ein ganzzahliges (32-Bit) Ergebnis zurück, das die Entfernung in Pixeln darstellt.
WheelEvent.wheelDeltaXSchreibgeschützt Veraltet-
Gibt ein ganzzahliges Ergebnis zurück, das die horizontale Scrollmenge darstellt.
WheelEvent.wheelDeltaYSchreibgeschützt Veraltet-
Gibt ein ganzzahliges Ergebnis zurück, das die vertikale Scrollmenge darstellt.
Beispiele
>Ein Element über das Rad skalieren
Dieses Beispiel zeigt, wie ein Element mit dem Rad der Maus (oder einem anderen Zeigegerät) skaliert werden kann.
<div>Scale me with your mouse wheel.</div>
body {
min-height: 100vh;
margin: 0;
display: flex;
align-items: center;
justify-content: center;
}
div {
width: 105px;
height: 105px;
background: #ccddff;
padding: 5px;
}
let scale = 1;
const el = document.querySelector("div");
function zoom(event) {
event.preventDefault();
scale += event.deltaY * -0.01;
// Restrict scale
scale = Math.min(Math.max(0.125, scale), 4);
// Apply scale transform
el.style.transform = `scale(${scale})`;
}
el.onwheel = zoom;
Entsprechendes addEventListener
Der Ereignishandler kann auch mit der Methode addEventListener() eingerichtet werden:
el.addEventListener("wheel", zoom, { passive: false });
Spezifikationen
| Specification |
|---|
| UI Events> # event-type-wheel> |
| HTML> # handler-onwheel> |
Browser-Kompatibilität
Loading…