<div class="accordions">
<div class="accordion">
<div class="accordion__layout">
<div class="accordion__title">
<p>アコーディオン01</p>
<div class="accordion__icon">
<div class="accordion__bar"></div>
</div>
</div>
<div class="accordion__content">
<p>アコーディオンの中身です。ここにはテキストが入る予定です。アコーディオンの中身です。ここにはテキストが入る予定です。アコーディオンの中身です。ここにはテキストが入る予定です。アコーディオンの中身です。ここにはテキストが入る予定です。アコーディオンの中身です。ここにはテキストが入る予定です。</p>
</div>
</div>
</div>
<div class="accordion">
<div class="accordion__layout">
<div class="accordion__title">
<p>アコーディオン02</p>
<div class="accordion__icon">
<div class="accordion__bar"></div>
</div>
</div>
<div class="accordion__content">
<p>アコーディオンの中身です。ここにはテキストが入る予定です。アコーディオンの中身です。ここにはテキストが入る予定です。アコーディオンの中身です。ここにはテキストが入る予定です。アコーディオンの中身です。ここにはテキストが入る予定です。アコーディオンの中身です。ここにはテキストが入る予定です。</p>
</div>
</div>
</div>
<div class="accordion">
<div class="accordion__layout">
<div class="accordion__title">
<p>アコーディオン03</p>
<div class="accordion__icon">
<div class="accordion__bar"></div>
</div>
</div>
<div class="accordion__content">
<p>アコーディオンの中身です。ここにはテキストが入る予定です。アコーディオンの中身です。ここにはテキストが入る予定です。アコーディオンの中身です。ここにはテキストが入る予定です。アコーディオンの中身です。ここにはテキストが入る予定です。アコーディオンの中身です。ここにはテキストが入る予定です。</p>
</div>
</div>
</div>
</div>
/* リセットCSS */
p {
margin: 0;
}
.accordions {
display: flex;
flex-direction: column;
gap: 30px;
}
.accordion {
&:nth-child(1) {
.accordion__title {
background-color: #ff0000;
}
.accordion__content {
border: 3px solid #ff0000;
border-top: none;
background-color: rgba(255, 0, 0, .07);
}
}
&:nth-child(2) {
.accordion__title {
background-color: #00AA00;
}
.accordion__content {
border: 3px solid #00AA00;
border-top: none;
background: rgba(0, 170, 0, .07);
}
}
&:nth-child(3) {
.accordion__title {
background-color: #0000ff;
}
.accordion__content {
border: 3px solid #0000ff;
border-top: none;
background: rgba(0, 0, 255, .07);
}
}
}
.accordion__layout {
max-width: 1000px;
margin: 0 auto;
}
.accordion__title {
position: relative;
padding: 16px 70px 16px 20px;
p {
font-size: 18px;
color: #fff;
}
}
.accordion__icon {
position: absolute;
top: 50%;
right: 20px;
transform: translateY(-50%);
width: 30px;
height: 30px;
}
.accordion__bar {
position: relative;
width: 100%;
height: 100%;
&::before {
content: "";
position: absolute;
top: 50%;
transform: translateY(-50%);
left: 0;
height: 4px;
width: 100%;
border-radius: calc(4px / 2);
background: #fff;
}
&::after {
content: "";
position: absolute;
top: 0;
left: 50%;
transform: translateX(-50%);
height: 100%;
width: 4px;
border-radius: calc(4px / 2);
background: #fff;
transition: all 0.3s;
}
}
.accordion__content {
display: none;
padding: 24px 20px;
}
/* アニメーションで使用 */
.js-icon-rotate {
.accordion__icon {
.accordion__bar {
&::after {
transform: translateX(-50%) rotate(90deg);
}
}
}
}
View Compiled
$(function(){
const accordion_title = $('.accordion__title');
const accordion_content = $('.accordion__content');
accordion_title.click(function(){
const accordion_content = $(this).next('.accordion__content');
accordion_content.slideToggle();
$(this).toggleClass("js-icon-rotate");
});
});
This Pen doesn't use any external CSS resources.