let hijo = document.querySelector('.hijo'); let etiqueta = document.querySelectorAll('.etiqueta'); //El metodo .getBoundingClientRect() nos da //la posicion de un elemento con respecto al viewport(en numeros). // tomare la posicion constante del elemento .hijo const coords = hijo.getBoundingClientRect(); const j = coords.top; // estamos obteniendo la posicion top en numero const k = coords.left; // se aplica forEach para obtener posicion de cada movimiento del mouse etiqueta.forEach(link => { // se obtiene la posicion del mouse con la funcion mover(e) function mover(e){ // se calcula la posicion top y left del mouse al cual le restamos // la posicion del elemento "hijo"; resultado: mouse e "hijo" juntos let m = e.pageY ; let n = e.pageX ; let t = m - j; let l = n - k; hijo.style.top = t + "px"; // agregando px a los numeros hijo.style.left = l + "px"; }; // mouseover dice que entro en elemento etiqueta link.addEventListener("mouseover",() => { hijo.classList.add("edd1");// solo agrega un class que le da color red window.addEventListener("mousemove",mover);// agrega el evento junto a la funcion }); link.addEventListener("mouseleave",() => {// mouseleave dice que salio del elemento etiqueta hijo.classList.remove("edd1"); // le quita un class, que le quita color red window.removeEventListener("mousemove", mover);// remuev el evento }); }); /* Simples estilos para delimitar los div*/ .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); /*desaparece el elemento hijo*/ } .edd1{ background-color: red; transform: scale(1); /*reaparece el elemento hijo con el mause al centro*/ } // un ejemplo con html <div class="box"> <div class="etiqueta"> <div class="hijo"></div> </div> </div>
Preview:
downloadDownload PNG
downloadDownload JPEG
downloadDownload SVG
Tip: You can change the style, width & colours of the snippet with the inspect tool before clicking Download!
Click to optimize width for Twitter