Чтобы реализовать механизм, при котором можно открывать только один блок, а остальные автоматически закрываются, можно использовать JavaScript вместе с HTML и CSS. Ниже приведен пример реализации такого функционала с использованием простого HTML и 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>
<div class="accordion">
<div class="accordion-item">
<div class="accordion-header" onclick="toggleAccordion(this)">Блок 1</div>
<div class="accordion-content">Содержимое блока 1</div>
</div>
<div class="accordion-item">
<div class="accordion-header" onclick="toggleAccordion(this)">Блок 2</div>
<div class="accordion-content">Содержимое блока 2</div>
</div>
<div class="accordion-item">
<div class="accordion-header" onclick="toggleAccordion(this)">Блок 3</div>
<div class="accordion-content">Содержимое блока 3</div>
</div>
</div>
<script src="script.js"></script>
</body>
</html>
```
### CSS (styles.css)
```css
.accordion {
width: 100%;
max-width: 600px;
margin: auto;
}
.accordion-item {
border: 1px solid #ccc;
margin: 5px 0;
}
.accordion-header {
background: #f1f1f1;
padding: 15px;
cursor: pointer;
}
.accordion-content {
display: none;
padding: 15px;
border-top: 1px solid #ccc;
}
```
### JavaScript (script.js)
```javascript
function toggleAccordion(header) {
// Получаем все элементы содержимого аккордеона
const allContents = document.querySelectorAll('.accordion-content');
// Закрываем все блоки
allContents.forEach(content => {
content.style.display = 'none';
});
// Открываем только тот блок, который был нажат
const content = header.nextElementSibling;
if (content.style.display === 'none' || content.style.display === '') {
content.style.display = 'block';
} else {
content.style.display = 'none';
}
}
// Установим начальное состояние, чтобы все блоки были закрыты
document.querySelectorAll('.accordion-content').forEach(content => {
content.style.display = 'none';
});
```
### Объяснение:
1. **HTML** - Создается структура аккордеона с заголовками и содержимым для трех блоков.
2. **CSS** - Стилизация аккордеона для улучшения внешнего вида.
3. **JavaScript**:
- Функция `toggleAccordion` открывает или закрывает выделенный блок.
- При нажатии на заголовок (кнопку аккордеона) сначала скрываются все открытые блоки, а затем открывается только содержимое блока, соответствующего нажатому заголовку.
- В начале скрипта устанавливается состояние, в котором все блоки закрыты.
С помощью этого кода вы можете создать аккордеон, в котором в любой момент времени может быть открыт только один блок.