Переключить класс, добавив имя класса при щелчке по элементу и удалив при щелчке за пределами

Опубликовано: 30 Ноября, 2021

В этой статье задача состоит в том, чтобы переключить класс CSS при щелчке по этому элементу и удалить этот конкретный класс при щелчке за пределами этого элемента, то есть в любом другом месте документа HTML.

Подход: это легко сделать с помощью JavaScript, выполнив следующие шаги:

  • Сначала мы выберем элемент, на котором должен быть переключен класс, и весь HTML-документ с помощью метода querySelector ().
  • Затем нам нужно добавить прослушиватели событий «щелчок» к обоим выбранным элементам.
  • В прослушиватель событий элемента, на который нужно щелкнуть, мы добавим требуемый класс CSS с помощью метода classList.add ().
  • В прослушивателе событий HTML-документа мы сначала проверим, является ли выбранная цель указанным выше обязательным элементом, а затем удалим класс с помощью метода classList.remove (), тем самым переключая класс при щелчке за пределами вышеуказанного элемента.

Пример: В этом примере в документе HTML определена кнопка, к которой «активный» класс CSS будет добавлен после нажатия на нее. Этот «активный» класс также будет удален с кнопки, как только мы щелкнем где-нибудь в 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 >

Выход: