Hier ist eine CSS-Variable (offiziell als „CSS-Benutzerdefinierte Eigenschaft“ bezeichnet)
:root {
--mouse-x: 0px;
--mouse-y: 0px;
}
Vielleicht verwenden Sie sie, um eine Position festzulegen
.mover {
left: var(--mouse-x);
top: var(--mouse-y);
}
Um diese Werte aus JavaScript zu aktualisieren, würden Sie
let root = document.documentElement;
root.addEventListener("mousemove", e => {
root.style.setProperty('--mouse-x', e.clientX + "px");
root.style.setProperty('--mouse-y', e.clientY + "px");
});
Das ist alles.
Siehe den Pen Set CSS Variable with JavaScript von Chris Coyier (@chriscoyier) auf CodePen.
Sie machen Witze, das ist wie eine Hochzeit von JS/CSS.
Relevant, verwende React, um Animationen mit einer CSS-Variablen zu staffeln
Ich würde
* { cursor: none; }zu Demozwecken hinzufügen.Ist es leistungsfähiger als das direkte Setzen der
top- undleft-Stile eines Elements?Ich sehe mindestens zwei Vorteile. Einer ist die Lesbarkeit von CSS: Wenn Sie ein Element an der Position Ihres Cursors anheften möchten, ist
left: var(--mouse-x)für mich einfach sinnvoll. Und wenn mehr als ein Element auf die Bewegung Ihrer Maus reagiert, müssen Sie diese nicht einzeln in Ihrem JS aktualisieren – Sie aktualisieren die CSS-Variable einfach einmal. Gemischt mit einigen anderen CSS-Techniken eröffnet dies praktisch eine ganze Reihe neuer Möglichkeiten. Ich habe gerade damit herumgespielt, um einige benutzerdefinierte Scrollbalken zu erstellen, und ich bin sicher, es gibt viele andere Anwendungsfälle! :-)Ja, ich nutze diese Fähigkeiten tatsächlich jeden Tag! So großartig... bis Ihr Kunde IE-Kompatibilität verlangt. Wie auch immer, ich habe gerade beschlossen, alle IE-Projekte aufzugeben, weil ich CSS-Variablen wirklich sehr mag!
Meine Frage bezog sich mehr auf die Leistung: Ist es leistungsfähiger, eine CSS-Variable zu setzen, als die
top- undleft-Stile direkt zu setzen?