es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

El color de fondo no cambia cuando se pasa el cursor por encima (CSS).

Hola chicos, estoy creando algo similar a un mouse personalizado. Quiero que su color sea blanco cuando se sitúe sobre los enlaces.

No sé qué está mal con mi código, no está funcionando correctamente cuando selecciono el elemento padre, pero cuando uso el elemento hijo no funciona. Ayúdenme, me he quedado atrapado con este código durante aproximadamente 4 horas, necesito ayuda.

Aquí está mi código:

<!-- begin snippet: js hide: false console: true babel: false -->
<!-- language: lang-js -->
const cursor = document.querySelector(".cursor");
const cursor2 = document.querySelector('.cursor2');
document.addEventListener('mousemove',(e) =>{
  cursor.style.left = e.pageX + 'px';
  cursor.style.top =  e.pageY + 'px';
  cursor2.style.left = e.pageX + 'px';
  cursor2.style.top =  e.pageY + 'px';
} )

<!-- language: lang-css -->
*{
    cursor: none;
}
body{
    background-color: black;
}
.cursor{
    position: fixed;
    width: 50px;
    height: 50px;
    border: 1px solid #c6c6c6;
    border-radius: 50%;
    left: 0;
    top: 0;
    pointer-events: none;
    transform: translate(-50%, -50%);
    transition: .12s;
}

.cursor2{
    position: fixed;
    width: 8px;
    height: 8px;
    background-color: #c6c6c6;
    border-radius: 50%;
    left: 0;
    top: 0;
    pointer-events: none;
    transform: translate(-50%, -50%);
    transition: .06s;
}

ul li a:hover ~ .cursor {
 background-color: white;
}

<!-- language: lang-html -->
<div class="nav">
    <ul>
        <li><a href="#">Hello</a></li>
    </ul>
</div>

<div class="cursor"></div>
<div class="cursor2"></div>

<!-- end snippet -->

Solo he pegado el código que escribí, no sé cuál es el problema.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Parece que el problema que estás enfrentando es con el selector de CSS “.cursor” que no cambia de color a blanco al pasar el cursor sobre los enlaces. Específicamente, parece que el uso del selector “~” en “ul li a:hover ~ .cursor” está causando el problema al intentar seleccionar el elemento hijo (“.cursor”).

    Una posible solución es ajustar la estructura HTML para envolver los enlaces en un elemento div y apuntar al div padre en lugar del elemento hijo “.cursor”, utilizando el selector “>”. Por ejemplo:

    HTML:

    <div class="nav">
        <ul>
            <li>
                <div class="link"><a href="#">Hola</a></div>
            </li>
        </ul>
    </div>
    

    CSS:

    .link:hover > .cursor {
        background-color: white;
    }
    

    Este selector apunta al elemento “.cursor” que es un hijo directo del elemento “.link”, y cambiará el color de fondo a blanco cuando se pase el cursor sobre el elemento padre “.link”.

    ¡Espero que esto ayude!

Comments are closed.