クリックで開閉するスクリプトです。
※ページにはjQuery本体を読み込んでおく。
HTML
<ul class="accordion">
<li>
<h3 class="toggle-btn"><span>タイトルなど</span></h3>
<div class="toggle-box">
<div class="inner">
内容が入ります。
</div>
</div>
</li>
<li>
<h3 class="toggle-btn"><span>タイトルなど</span></h3>
<div class="toggle-box">
<div class="inner">
内容が入ります。
</div>
</div>
</li>
</ul>
CSS
.accordion li {
list-style: none;
padding-bottom: 5px;
background-color: #eee;
border-radius: 10px;
margin-bottom: 20px;
}
.accordion li .toggle-box {
display: none;
background-color: #fff;
border-radius: 10px;
margin: 15px;
margin-top: 0;
padding: 30px;
}
.toggle-btn {
display: block;
cursor: pointer;
font-size: 20px;
font-weight: 400;
letter-spacing: 0.1em;
line-height: 150%;
}
.toggle-btn span {
display: block;
position: relative; /* 疑似要素の基準点 */
padding: 25px 60px 25px 20px; /* 余白を調整 */
}
/* プラス・マイナス共通の線スタイル */
.toggle-btn span::before,
.toggle-btn span::after {
content: "";
position: absolute;
right: 25px; /* 右端からの距離 */
top: 50%;
width: 20px; /* アイコンの幅 */
height: 2px; /* アイコンの線の太さ */
background-color: #333; /* アイコンの色 */
transition: transform 0.3s ease; /* 変化を滑らかに */
}
/* プラス(横棒は常に表示、縦棒を重ねる) */
.toggle-btn span::after {
transform: translateY(-50%) rotate(90deg);
}
/* オープン時のスタイル(マイナスにする) */
.toggle-btn span.open::after {
transform: translateY(-50%) rotate(0deg); /* 縦棒を寝かせて横棒に重ねる */
opacity: 0; /* または非表示にする */
}
.toggle-btn span.open::before {
/* 必要に応じてオープン時の色変更など */
}
JS
$(function(){
$(".accordion .toggle-btn").on('click', function() {
$(this).next("div.toggle-box").slideToggle();
$(this).children("span").toggleClass("open");
});
});