Для реализации этого поведения вам понадобится немного JavaScript.
Сначала давайте дадим класс CSS коду, который инвертирует цвета:
body.colors-inverted {
filter: invert(0.85);
}
Затем давайте добавим кнопку к нашему HTML:
<button id='invert-colors'>Invert colors</button>
И заставим кнопку переключать класс colors-inverted
на элемент body
:
// find the button on the page
let btn = document.querySelector('#invert-colors');
// when clicking the button, toggle the class on <body>
btn.addEventListener('click', function() {
document.body.classList.toggle('colors-inverted');
});
( Примечание: приведенный выше сценарий необходимо добавить в элемент <script>
где-нибудь в HTML, где угодно после элемента <button>
).
Вот рабочий пример с двумя способы сделать это:
- На основе кнопки (с использованием события
click
) - На основе флажка (с использованием события
change
и состояния e.target.checked
)
let btn = document.querySelector('#invert-colors-button');
btn.addEventListener('click', function toggle() {
document.body.classList.toggle('colors-inverted');
});
let cb = document.querySelector('#invert-colors-checkbox');
cb.addEventListener('change', function(e) {
document.body.classList.toggle('colors-inverted', e.target.checked);
});
body.colors-inverted {
filter: invert(0.85);
}
<h1>Welcome to my website!</h1>
<button id='invert-colors-button'>Invert colors</button>
<input type='checkbox' id='invert-colors-checkbox'/>
<label for='invert-colors-checkbox'>Invert colors</label>