HTML
<div class="accordion-slide">
<div class="accordion-item">
<button class="accordion-question">Q. このアコーディオンの特徴は?</button>
<div class="accordion-answer">
<p>A. モノトーンにラインの動きを加えた、スタイリッシュなデザインです。</p>
</div>
</div>
<div class="accordion-item">
<button class="accordion-question">Q. 複数開けますか?</button>
<div class="accordion-answer">
<p>A. はい、複数同時に開くことができます。</p>
</div>
</div>
</div>
CSS
.accordion-slide {
max-width: 600px;
margin: 60px auto;
font-family: 'Helvetica Neue', sans-serif;
}
.accordion-item {
border-bottom: 1px solid #ccc;
position: relative;
overflow: hidden;
}
.accordion-question {
background: #fff;
border: none;
width: 100%;
text-align: left;
padding: 20px 20px;
font-size: 17px;
font-weight: 500;
color: #222;
cursor: pointer;
position: relative;
overflow: hidden;
}
.accordion-question::before {
content: '';
position: absolute;
bottom: 0;
left: 0;
width: 0%;
height: 2px;
background-color: #222;
transition: width 0.3s ease;
}
.accordion-question.active::before {
width: 100%;
}
.accordion-question::after {
content: '+';
position: absolute;
right: 20px;
top: 50%;
transform: translateY(-50%);
font-size: 20px;
transition: 0.3s ease;
}
.accordion-question.active::after {
content: '−';
}
.accordion-answer {
display: none;
padding: 18px 20px;
font-size: 15px;
color: #444;
background-color: #f8f8f8;
}
JavaScript
document.addEventListener('DOMContentLoaded', function () {
const questions = document.querySelectorAll('.accordion-slide .accordion-question');
questions.forEach((btn) => {
btn.addEventListener('click', () => {
btn.classList.toggle('active');
const answer = btn.nextElementSibling;
if (answer.style.display === 'block') {
answer.style.display = 'none';
} else {
answer.style.display = 'block';
}
});
});
});