Element: mouseleave Ereignis

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.

Das mouseleave Ereignis wird bei einem Element ausgelöst, wenn der Cursor eines Zeigegeräts (meistens eine Maus) es verlässt.

mouseleave und mouseout sind ähnlich, unterscheiden sich aber darin, dass mouseleave nicht nach oben durchreicht (bubbled) und mouseout schon. Dies bedeutet, dass mouseleave ausgelöst wird, wenn der Zeiger das Element und alle seine Nachkommen verlassen hat, während mouseout ausgelöst wird, wenn der Zeiger das Element oder einen der Nachkommen des Elements verlässt (auch wenn der Zeiger sich noch innerhalb des Elements befindet).

Die mouseleave und mouseout Ereignisse werden nicht ausgelöst, wenn das Element ersetzt oder aus dem DOM entfernt wird.

Beachten Sie, dass "das Verlassen eines Elements" sich auf die Position des Elements im DOM-Baum bezieht, nicht auf seine visuelle Position. Wenn beispielsweise zwei Geschwisterelemente so positioniert sind, dass eines das andere umfasst, dann löst das Bewegen vom äußeren Element in das innere Element ein mouseleave beim äußeren Element aus, obwohl sich der Zeiger noch innerhalb der Grenzen des äußeren Elements befindet.

Syntax

Verwenden Sie den Ereignisnamen in Methoden wie addEventListener(), oder setzen Sie eine Ereignishandler-Eigenschaft.

js
addEventListener("mouseleave", (event) => {});

onmouseleave = (event) => {};

Ereignistyp

Ereigniseigenschaften

Diese Schnittstelle erbt auch Eigenschaften ihrer Eltern, UIEvent und Event.

MouseEvent.altKey Nur lesbar

Gibt true zurück, wenn die alt-Taste gedrückt war, als das Mausereignis ausgelöst wurde.

MouseEvent.button Nur lesbar

Die Nummer der Taste, die (falls zutreffend) gedrückt wurde, als das Mausereignis ausgelöst wurde.

MouseEvent.buttons Nur lesbar

Die Tasten, die gedrückt wurden (falls vorhanden), als das Mausereignis ausgelöst wurde.

MouseEvent.clientX Nur lesbar

Die X-Koordinate des Mauszeigers in Viewport-Koordinaten.

MouseEvent.clientY Nur lesbar

Die Y-Koordinate des Mauszeigers in Viewport-Koordinaten.

MouseEvent.ctrlKey Nur lesbar

Gibt true zurück, wenn die Strg-Taste gedrückt war, als das Mausereignis ausgelöst wurde.

MouseEvent.layerX Nicht standardisiert Nur lesbar

Gibt die horizontale Koordinate des Ereignisses relativ zur aktuellen Ebene zurück.

MouseEvent.layerY Nicht standardisiert Nur lesbar

Gibt die vertikale Koordinate des Ereignisses relativ zur aktuellen Ebene zurück.

MouseEvent.metaKey Nur lesbar

Gibt true zurück, wenn die Meta-Taste gedrückt war, als das Mausereignis ausgelöst wurde.

MouseEvent.movementX Nur lesbar

Die X-Koordinate des Mauszeigers relativ zur Position des letzten mousemove Ereignisses.

MouseEvent.movementY Nur lesbar

Die Y-Koordinate des Mauszeigers relativ zur Position des letzten mousemove Ereignisses.

MouseEvent.offsetX Nur lesbar

Die X-Koordinate des Mauszeigers relativ zur Position der Randeinfassung des Zielknotens.

MouseEvent.offsetY Nur lesbar

Die Y-Koordinate des Mauszeigers relativ zur Position der Randeinfassung des Zielknotens.

MouseEvent.pageX Nur lesbar

Die X-Koordinate des Mauszeigers relativ zum gesamten Dokument.

MouseEvent.pageY Nur lesbar

Die Y-Koordinate des Mauszeigers relativ zum gesamten Dokument.

MouseEvent.relatedTarget Nur lesbar

Das sekundäre Ziel für das Ereignis, falls vorhanden.

MouseEvent.screenX Nur lesbar

Die X-Koordinate des Mauszeigers in Bildschirmkoordinaten.

MouseEvent.screenY Nur lesbar

Die Y-Koordinate des Mauszeigers in Bildschirmkoordinaten.

MouseEvent.shiftKey Nur lesbar

Gibt true zurück, wenn die Shift-Taste gedrückt war, als das Mausereignis ausgelöst wurde.

MouseEvent.mozInputSource Nicht standardisiert Nur lesbar

Der Typ des Geräts, das das Ereignis erzeugt hat (einer der MOZ_SOURCE_* Konstanten). Dies ermöglicht Ihnen zum Beispiel die Bestimmung, ob ein Mausereignis von einer tatsächlichen Maus oder durch ein Touch-Ereignis erzeugt wurde (was die Genauigkeit beeinflussen könnte, mit der Sie die mit dem Ereignis verbundenen Koordinaten interpretieren).

MouseEvent.webkitForce Nicht standardisiert Nur lesbar

Die aufgebrachte Druckmenge beim Klicken.

MouseEvent.x Nur lesbar

Alias für MouseEvent.clientX.

MouseEvent.y Nur lesbar

Alias für MouseEvent.clientY.

Verhalten der mouseleave Ereignisse

Verhaltensdiagramm für mouseleave

Ein mouseleave Ereignis wird an jedes Element der Hierarchie gesendet, wenn es verlassen wird. Hier werden vier Ereignisse an die vier Elemente der Hierarchie gesendet, wenn der Mauszeiger sich vom Text zu einem Bereich außerhalb des hier dargestellten äußeren Div bewegt.

Verhalten der mouseout Ereignisse

Verhaltensdiagramm für mouseout

Ein einzelnes mouseout Ereignis wird an das tiefste Element des DOM-Baums gesendet, dann wandert es die Hierarchie hinauf, bis es von einem Handler abgebrochen wird oder die Wurzel erreicht.

Beispiele

Die Dokumentation zu mouseout enthält ein Beispiel, das den Unterschied zwischen mouseout und mouseleave veranschaulicht.

mouseleave

Das folgende einfache Beispiel nutzt das mouseenter Ereignis, um den Rand des <div> zu ändern, wenn die Maus den für es vorgesehenen Raum betritt. Dann wird ein Element zu der Liste mit der Nummer des mouseenter oder mouseleave Ereignisses hinzugefügt.

HTML

html
<div id="mouseTarget">
  <ul id="unorderedList">
    <li>No events yet!</li>
  </ul>
</div>

CSS

Gestaltung des <div>, um es besser sichtbar zu machen.

css
#mouseTarget {
  box-sizing: border-box;
  width: 15rem;
  border: 1px solid #333;
}

JavaScript

js
let enterEventCount = 0;
let leaveEventCount = 0;
const mouseTarget = document.getElementById("mouseTarget");
const unorderedList = document.getElementById("unorderedList");

mouseTarget.addEventListener("mouseenter", (e) => {
  mouseTarget.style.border = "5px dotted orange";
  enterEventCount++;
  addListItem(`This is mouseenter event ${enterEventCount}.`);
});

mouseTarget.addEventListener("mouseleave", (e) => {
  mouseTarget.style.border = "1px solid #333";
  leaveEventCount++;
  addListItem(`This is mouseleave event ${leaveEventCount}.`);
});

function addListItem(text) {
  // Create a new text node using the supplied text
  const newTextNode = document.createTextNode(text);

  // Create a new li element
  const newListItem = document.createElement("li");

  // Add the text node to the li element
  newListItem.appendChild(newTextNode);

  // Add the newly created list item to list
  unorderedList.appendChild(newListItem);
}

Ergebnis

Spezifikationen

Specification
UI Events
# event-type-mouseleave
HTML Standard
# handler-onmouseleave

Browser-Kompatibilität

BCD tables only load in the browser

Siehe auch