A. 吹き出しのような見た目で、親しみやすいデザインです。
A. よくある質問・コメント紹介など、会話風コンテンツにぴったりです。
HTML
<div class="accordion-balloon">
<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-balloon {
max-width: 640px;
margin: 60px auto;
font-family: 'Yu Gothic', sans-serif;
}
.accordion-item {
position: relative;
margin-bottom: 24px;
}
.accordion-question {
background: #e0f7fa;
border: none;
border-radius: 16px;
padding: 16px 20px;
width: 100%;
text-align: left;
font-size: 16px;
font-weight: bold;
color: #00796b;
position: relative;
cursor: pointer;
transition: background 0.3s ease;
}
.accordion-question:hover {
background: #b2ebf2;
}
.accordion-question::after {
content: '+';
position: absolute;
right: 20px;
top: 50%;
transform: translateY(-50%);
font-size: 20px;
font-weight: bold;
color: #00796b;
}
.accordion-question.active::after {
content: '−';
}
.accordion-answer {
display: none;
margin-top: 10px;
padding: 16px 20px;
background: #fff;
border-radius: 16px;
border: 2px solid #e0f7fa;
color: #333;
font-size: 15px;
line-height: 1.6;
position: relative;
}
.accordion-answer::before {
content: '';
position: absolute;
top: -10px;
left: 30px;
border-width: 0 10px 10px 10px;
border-style: solid;
border-color: transparent transparent #fff transparent;
}
.accordion-answer::after {
content: '';
position: absolute;
top: -12px;
left: 28px;
border-width: 0 12px 12px 12px;
border-style: solid;
border-color: transparent transparent #e0f7fa transparent;
}
JavaScript
document.addEventListener('DOMContentLoaded', function () {
const questions = document.querySelectorAll('.accordion-balloon .accordion-question');
questions.forEach((btn) => {
btn.addEventListener('click', () => {
btn.classList.toggle('active');
const answer = btn.nextElementSibling;
answer.style.display = answer.style.display === 'block' ? 'none' : 'block';
});
});
});