Создание анимации появления и исчезновения изображений при нажатии на кнопки можно реализовать с использованием HTML, CSS и JavaScript. Вот пошаговое руководство:
### HTML
Создайте структуру для кнопок и изображений:
```html
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Анимация изображений</title>
<link rel="stylesheet" href="styles.css">
</head>
<body>
<button id="showButton">Показать изображения</button>
<button id="hideButton">Скрыть изображения</button>
<div id="imageContainer">
<img class="fade" src="image1.jpg" alt="Изображение 1">
<img class="fade" src="image2.jpg" alt="Изображение 2">
<img class="fade" src="image3.jpg" alt="Изображение 3">
</div>
<script src="script.js"></script>
</body>
</html>
```
### CSS
Добавьте стили для изображений и анимации:
```css
/* styles.css */
body {
display: flex;
flex-direction: column;
align-items: center;
}
#imageContainer {
margin-top: 20px;
}
.fade {
opacity: 0;
transition: opacity 0.5s ease-in-out;
display: none; /* Скрываем их изначально */
}
.fade.visible {
opacity: 1;
display: block; /* Показываем, когда добавим класс visible */
}
```
### JavaScript
Добавьте логику для обработки нажатий кнопок и управления классами изображений:
```javascript
// script.js
document.addEventListener("DOMContentLoaded", function () {
const showButton = document.getElementById("showButton");
const hideButton = document.getElementById("hideButton");
const images = document.querySelectorAll(".fade");
showButton.addEventListener("click", function () {
images.forEach(image => {
// Проверяем, если изображение уже на экране
if (!image.classList.contains('visible')) {
image.classList.add('visible');
// Убедимся, что отображаемое изображение видимо после добавления класса
image.style.display = 'block';
}
});
});
hideButton.addEventListener("click", function () {
images.forEach(image => {
// Проверяем, если изображение уже скрыто
if (image.classList.contains('visible')) {
image.classList.remove('visible');
// Скрываем после завершения анимации
setTimeout(() => {
image.style.display = 'none';
}, 500); // Соответствует времени перехода (0.5 секунды)
}
});
});
});
```
### Объяснение
1. **HTML**: Две кнопки для показа и скрытия изображений, а также контейнер для изображений.
2. **CSS**: Класс `.fade` изначально устанавливает непрозрачность изображений в 0 и добавляет плавный переход. Класс `visible` изменяет непрозрачность на 1 и устанавливает изображение как видимое.
3. **JavaScript**:
- Перехватываем события нажатия кнопок.
- При нажатии на кнопку "Показать" проверяем, есть ли у изображения класс `visible`. Если нет — добавляем его и выставляем свойство `display` в `block` для отображения.
- При нажатии на кнопку "Скрыть" проверяем наличие класса `visible`. Если класс есть, мы его удаляем, а изображение скрываем через 500 мс (время анимации).
Теперь при нажатии на кнопки изображения будут плавно появляться и исчезать, и это поведение будет сохраняться при повторных нажатиях.