Alterne la clase agregando el nombre de la clase cuando se hace clic en el elemento y elimínelo cuando se hace clic fuera

En este artículo, la tarea es alternar una clase CSS cuando se hace clic en ese elemento y eliminar esa clase en particular cuando se hace clic fuera de ese elemento, es decir, en cualquier otro lugar del documento HTML.

Enfoque: Esto se puede lograr fácilmente con la ayuda de JavaScript siguiendo los pasos a continuación:

  • Primero seleccionaremos el elemento en el que se debe alternar la clase y todo el documento HTML usando el método querySelector().
  • A continuación, debemos agregar los detectores de eventos ‘clic’ a ambos elementos seleccionados.
  • En el detector de eventos del elemento en el que se debe hacer clic, agregaremos la clase CSS requerida usando el método classList.add().
  • En el detector de eventos del documento HTML, primero verificaremos si el destino en el que se hizo clic es el elemento requerido anterior y luego eliminaremos la clase usando el método classList.remove(), alternando así la clase cuando se haga clic fuera del elemento anterior.

Ejemplo: En este ejemplo, se define un botón en el documento HTML en el que se agregaría la clase CSS ‘activa’ una vez que se haga clic en él. Esta clase ‘activa’ también se eliminará del botón una vez que hagamos clic en cualquier otro lugar del documento HTML.

HTML

<!DOCTYPE html>
<html>
 
<head>
    <style>
        button {
            background-color: green;
            color: white;
            padding: 10px 24px;
            font-size: 18px;
            border: none;
            font-weight: bold;
            transition: all 0.4s;
            margin: 300px;
        }
 
        .active {
            background-color: black;
        }
    </style>
</head>
 
<body>
    <button>GeeksforGeeks</button>
 
    <script>
        // Select the button on which the
        // class has to be toggled
        const btn = document.querySelector("button");
 
        // Select the entire HTML document
        const html = document.querySelector("html");
 
        // Add an event listener for
        // a click to the button
        btn.addEventListener("click", function (e) {
 
            // Add the required class
            btn.classList.add("active");
        });
 
        // Add an event listener for a
        // click to the html document
        html.addEventListener("click", function (e) {
 
            // If the element that is clicked on is
            // not the button itself, then remove
            // the class that was added earlier
            if (e.target !== btn)
                btn.classList.remove("active");
        });
    </script>
</body>
 
</html>

Producción:

Publicación traducida automáticamente

Artículo escrito por arpit2205 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *