Давай реализуем вот такую штуку:
Лапочка освещает нам путь, но стоит ее выключить (нажать на нее), как становится темно и грустно.
Итак, наш план действий:
- делаем HTML и CSS;
- находим тег, содержащий картинку в DOM;
- вешаем на этот тег слушатель событий addEventListener
- меняем фон при клике
Поехали!
Делаем HTML и CSS
Картинку можно разместить двумя способами - через тег img, либо как фон тега div.
Менять фон проще, поэтому пойдем по второму пути, а потом посмотрим еще варианты.
Что бы картинка влезла полностью зададим div высоту в 100vh.
Теперь добавим сюда класс с включенной лапочкой
Файлики тут - https://disk.yandex.ru/d/-0REW69eSapOvg
Получим вот такую красоту
Аналогично делаем для выключенной лампочки. Не забываем про черный фон!
Находим тег, содержащий картинку в DOM
Пора писать JS. Для начала нужно получить наш тег в JS (или если более правильно то находим DOM узел нашего тега).
Для этого можно использовать, к примеру, стандартный метод querySelector() объекта document с селектором по тегу div
Вешаем на тег слушатель событий addEventListener
Далее, что бы что-то изменить в этом мире нам нужно добавить обработчик события к нашему диву.
Он работает очень просто - при событии клика (click) по области нашего дива начинает работать функция (function())
Меняем фон при клике
Добрались до интересного. Здесь нам потребуется замечательное свойство .classList, которое есть у каждого элемента.
У этого свойства есть четыре метода:
- .classList.add(”class”) - добавляет класс
- .classList.remove(”class”) - удаляет класс
- .classList.toggle(”class”) - добавляет если класса нет, удаляет если есть
- .classList.contains(”class”) - проверяет есть ли класс (возвращает true|false)
- .classList.replace("class1", "class2") - меняет один класс на другой
Здесь нам идеально подойдет toggle.
Вот еще пару полезных штук, которые можно кстати делать со свойством classList. Но их используют не часто, так как не все о них помнят.
- Можно добавить или удалить сразу несколько классов
2. а еще можно добавить условие для toggle прямо в него =)
Ну вот, и все мигает!
Для самых ленивых, весь код (а его очень-очень мало).