Das div-Element reagiert nicht auf JS onmouseover
P粉180844619
P粉180844619 2024-04-02 20:47:52
0
1
451

Ich habe also ein einfaches Arbeitsbeispiel, bei dem ich den Cursor/die Maus bewege und ein Div mit einem Stil erzeuge, der ein Wellenmuster basierend auf clientX darstellt.

Nur wenn ich will addEventlistener 添加到 window 时才有效: window.onmousemove= e => AnimationBubble(e.clientX);

Fragen Sie mich nicht, was diese Funktion macht, und prüfen Sie bitte nicht, ob etwas damit nicht stimmt! Lassen Sie mich Ihnen sagen, dass es mit dieser Funktion keine Probleme/Bugs gibt, es ist nur eine einfache Funktion, die Mauspositionen akzeptiert, ein Div mit einigen Klassen generiert und es nach ein paar Sekunden entfernt. clientX

Ich habe festgestellt, dass das Hinzufügen von Ereignis-Listenern zum gesamten Fenster nutzlos ist, während das Div nur generiert wird, wenn

oben ist. Ich denke darüber nach, dies zum Fußzeilenbereich hinzuzufügen, um es für Benutzer interaktiver zu machen. mousemove eventlistener 添加到父 div 中,我可以节省大量 CPU 使用率。指示仅当用户将鼠标悬停在 parent div/container

const wrapper = document.getElementById("bubble_wrapper");

const animationBubble = (x) => {
  const bubble = document.createElement("div");
  bubble.className = "bubble";
  bubble.style.left = `${x}px`;
  wrapper.appendChild(bubble);
  setTimeout(() => wrapper.removeChild(bubble), 2000)
}

// wrapper.addEventListener('mouseover', (e) => {
//     console.log("hi")
//     animationBubble(e.clientX);
// });

window.onmousemove = e => animationBubble(e.clientX);
#bubble_wrapper {
  height           : 50%;
  width            : 100%;
  background-color : black;
  position         : fixed;
  bottom           : 0;
  overflow         : hidden;
  pointer-events   : none;
  }
.bubble {
  height           : max(300px, 30vw);
  width            : max(300px, 30vw);
  background-color : rgb(33, 150, 243);
  border-radius    : 100%;
  position         : absolute;
  left             : 50%;
  top              : 100%;
  animation        : wave 2s ease-in-out infinite;
}
@keyframes wave {
  from, to { transform: translate(-50%,   0%); }
  50%      { transform: translate(-50%, -20%); }
  }
<div id="bubble_wrapper"></div>

P粉180844619
P粉180844619

Antworte allen(1)
P粉970736384

只需将 css 类: pointer-events: none; 替换为 cursor: none;#bubble_wrapper ,它应该按预期工作:)

希望能帮到你!

Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage