Как можно настроить ситуацию, чтобы при нажатии элемент не исчезал?

Как сделать так, чтобы при нажатии на кнопку выполнялось несколько действий? Например, я хочу, чтобы при нажатии на кнопку отображался блок, и этот блок не исчезал, как это происходит с псевдоклассом :active. Я хотела бы, чтобы блок оставался видимым после первого нажатия, а при повторном нажатии скрывался. Правильно ли я понимаю, что для этого мне потребуется использовать JavaScript, а не только CSS и HTML?
  • 16 ноября 2024 г. 9:23
Ответы на вопрос 2
Да, вы правильно понимаете. Чтобы реализовать поведение, при котором элемент при первом нажатии отображается, а при повторном нажатии скрывается, вам понадобится использовать JavaScript. CSS и HTML сами по себе не способны сохранять состояние после взаимодействия пользователя, поскольку они не имеют возможности обрабатывать события.

Ниже приведен пример того, как это можно реализовать:

### HTML
```html
<button id="toggleButton">Показать/Скрыть блок</button>
<div id="toggleBlock" style="display: none;">
    Это скрытый блок.
</div>
```

### CSS (по желанию)
```css
#toggleBlock {
    padding: 10px;
    background-color: #f0f0f0;
    border: 1px solid #ccc;
}
```

### JavaScript
```javascript
document.getElementById('toggleButton').addEventListener('click', function() {
    var block = document.getElementById('toggleBlock');
    if (block.style.display === 'none') {
        block.style.display = 'block';
    } else {
        block.style.display = 'none';
    }
});
```

### Пояснение:
1. **HTML**: Создали кнопку и скрытый блок.
2. **CSS**: Установили скрытый блок в `display: none;`, чтобы он изначально не отображался.
3. **JavaScript**:
   - Используем `addEventListener`, чтобы слушать событие клика по кнопке.
   - В обработчике события проверяем текущее состояние блока. Если он скрыт (`display: none`), показываем его (`display: block`), а если видим (то есть `display: block`), скрываем его (`display: none`).

Так вы сможете легко управлять видимостью элемента при нажатии на кнопку.
Метод называется checkbox hack. 
Мы на самом деле используем checkbox и его превосходное свойство работать даже при нажатии на метку, которая с ним ассоциирована. Таким образом мы скрываем сам нативный checkbox, а его метку стилизуем так, как нам надо, хоть в виде кнопки, хоть в виде чего угодно. И вместо :active у кнопки проверяем :checked у чекбокса
https://css-tricks.com/the-checkbox-hack/

А вот ещё набор идей
https://codepen.io/
В поиске наберите "toggle-swich"

И вот что-то похожее на ваш случай
Похожие вопросы