Mover elemento dentro de un div junto al mouse(EN VARIOS BOTONES)
Thu Dec 16 2021 15:50:17 GMT+0000 (Coordinated Universal Time)
Saved by
@samn
#javascript
#eventos
let etiqueta = document.querySelectorAll('.etiqueta');
etiqueta.forEach(link => {
link.addEventListener("mouseover",() => { // mouseover cuando el mause entra al elemento etiqueta
const t = link.getBoundingClientRect(); // calcula la posición de link(etiqueta)
let hijo = link.querySelectorAll('.hijo');
hijo.forEach(l1 => {
l1.classList.add("edd1"); // solo quita un class, que le quita color red y la escala
function mover(e){
let left = e.pageX;
let top = e.pageY;
l1.style.left = left - t.left + "px";
l1.style.top = top - t.top + "px";
};
l1.parentNode.addEventListener("mousemove", mover);
});
});
link.addEventListener("mouseleave",() => {// mouseleave cuando el mouse salio del elemento etiqueta
let hijo = link.querySelectorAll('.hijo');
hijo.forEach(l2 => {
l2.classList.remove("edd1"); // le solo quita un class, que le quita color red y la escala 1
l2.parentNode.onmousemove = null;
});
});
});
//HTML
<div class="box">
<div class="etiqueta">
<div class="hijo"></div>
</div>
</div>
<div class="box">
<div class="etiqueta">
<div class="hijo"></div>
</div>
</div>
//css
.box{
width: 300px;
height: 300px;
border: solid 1px black;
}
.etiqueta{
width:100px;
height:100px;
position: absolute;
left:50px;
top:50px;
background: green;
overflow: hidden;
position:relative;
}
.hijo{
position: absolute;
width: 20px;
height: 20px;
border-radius: 50%;
background-color: blue;
transform: scale(0) translate(-50%,-50%); //posiciona el inicio
transition: transform 0.9s ease;
}
.edd1{
transform:scale(5) translate(-50%,-50%); // posiciona cuando ya sufrio la escala 5
transform-origin: 0% 0%;
background-color: red;
}
content_copyCOPY
l2.parentNode.onmousemove = null;
--.parentNode : seleciona al padre del elemento hijo(l2)
--.onmousemove : enciende el evento mousemove, y al ponerle null se apaga.
---LINK: pregunta que hice en stackoverlflow
https://es.stackoverflow.com/questions/504585/problemas-para-remover-un-evento-mousemove
Comments