Для реализации такой функции необходимо использовать JavaScript и добавить соответствующие обработчики событий. Пример реализации: HTML: ```html <div class="accordion"> <div class="accordion-item"> <div class="accordion-header">Заголовок 1</div> <div class="accordion-content">Содержимое 1</div> </div> <div class="accordion-item"> <div class="accordion-header">Заголовок 2</div> <div class="accordion-content">Содержимое 2</div> </div> <div class="accordion-item"> <div class="accordion-header">Заголовок 3</div> <div class="accordion-content">Содержимое 3</div> </div> </div> ``` CSS: ```css .accordion .accordion-header { cursor: pointer; } .accordion .accordion-content { display: none; } ``` JavaScript: ```javascript document.addEventListener('DOMContentLoaded', function() { const accordionHeaders = document.querySelectorAll('.accordion .accordion-header'); accordionHeaders.forEach(function(header) { header.addEventListener('click', function() { const accordionItem = this.parentNode; // Закрываем все аккордеоны const accordionItems = document.querySelectorAll('.accordion .accordion-item'); accordionItems.forEach(function(item) { if (item !== accordionItem) { item.classList.remove('active'); item.querySelector('.accordion-content').style.display = 'none'; } }); // Открываем/закрываем текущий аккордеон accordionItem.classList.toggle('active'); const content = accordionItem.querySelector('.accordion-content'); if (content.style.display === 'block') { content.style.display = 'none'; } else { content.style.display = 'block'; } }); }); }); ``` В данном примере при клике на заголовок аккордеона происходит открытие или закрытие соответствующего содержимого. При этом все остальные аккордеоны закрываются.
document.addEventListener('DOMContentLoaded', () => { const accordions = document.querySelectorAll('.accordion'); accordions.forEach(el => { el.addEventListener('click', (e) => { const self = e.currentTarget; const control = self.querySelector('.accordion__control'); const content = self.querySelector('.accordion__content'); accordions.forEach(el => { if (self !== el) { el.classList.remove('open'); } }) self.classList.toggle('open'); if (self.classList.contains('open')) { control.setAttribute('aria-expanded', true); content.setAttribute('aria-hidden', false); content.style.maxHeight = content.scrollHeight + 'px'; } else { control.setAttribute('aria-expanded', false); content.setAttribute('aria-hidden', true); content.style.maxHeight = null; } }) }) });