A. フラットなカード風デザインに、スライドアニメーションを加えたスタイリッシュな仕様です。
A. 無駄をそぎ落としたUIを求める人、シンプル・機能的なサイトを作りたい方に最適です。
HTML
<div class="accordion-card">
<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. 無駄をそぎ落としたUIを求める人、シンプル・機能的なサイトを作りたい方に最適です。</p>
</div>
</div>
</div>
CSS
.accordion-card {
max-width: 700px;
margin: 60px auto;
font-family: 'Segoe UI', sans-serif;
}
.accordion-item {
background: #ffffff;
border: 1px solid #e0e0e0;
border-radius: 8px;
margin-bottom: 16px;
box-shadow: 0 2px 6px rgba(0,0,0,0.05);
overflow: hidden;
transition: box-shadow 0.3s ease;
}
.accordion-item:hover {
box-shadow: 0 4px 12px rgba(0,0,0,0.1);
}
.accordion-question {
background: none;
border: none;
width: 100%;
text-align: left;
padding: 18px 24px;
font-size: 17px;
font-weight: bold;
color: #333;
cursor: pointer;
position: relative;
transition: background-color 0.2s ease;
}
.accordion-question::after {
content: '+';
position: absolute;
right: 24px;
top: 50%;
transform: translateY(-50%);
font-size: 20px;
color: #888;
transition: transform 0.3s ease;
}
.accordion-question.active::after {
content: '−';
}
.accordion-answer {
max-height: 0;
overflow: hidden;
padding: 0 24px;
background: #fafafa;
font-size: 15px;
color: #555;
transition: max-height 0.4s ease, padding 0.4s ease;
}
.accordion-answer.open {
padding: 16px 24px;
max-height: 500px; /* Enough height for transition */
}
JavaScript
document.addEventListener('DOMContentLoaded', function () {
const items = document.querySelectorAll('.accordion-card .accordion-item');
items.forEach((item) => {
const question = item.querySelector('.accordion-question');
const answer = item.querySelector('.accordion-answer');
question.addEventListener('click', () => {
question.classList.toggle('active');
answer.classList.toggle('open');
});
});
});