Accordion
クリックで表示非表示を切り替える機能
スライドで表示非表示を切り替えるアコーディオン機能。
- 親ネスト: 全て非表示
-
- 子ネスト
-
- 孫ネスト
- 表示内容
- 親ネスト: 親を初期表示
-
- 子ネスト
-
- 孫ネスト
- 表示内容
- 親ネスト: 子ネストを初期表示
-
- 子ネスト
-
- 孫ネスト
- 表示内容
使い方
トリガーとなる要素に+-.mod_acc-head-+のクラスを付与。
表示非表示を切り替える要素に+-.mod_acc-body-+クラスを付与。
上記2つを+-.mod_acc-+で包む。
初期表示
+-.mod_acc-+に+-open-+classを入れておくと初期表示可能。
ネストも可能。ネストした子要素を開いておくことも可能。
.mod_acc-head ,
.mod_acc-body {padding: 8px 24px;}
.mod_acc-head {
margin: 0 0 8px;
border-bottom: 1px solid var(--line-main);
display: flex;
justify-content: space-between;
cursor: pointer;
}
.mod_acc-btn .ico-mui::before {content: '\e313';}
.mod_acc-btn .ico-mui {transition: .2s;}
.mod_acc.open > .mod_acc-head .ico-mui {transform: rotate(180deg);}
.mod_acc-body {display: none;}
$('.mod_acc').each(function(){
$(this).children('.mod_acc-head').append('<button class="mod_acc-btn"><i class="ico-mui"></i></button>');
if($(this).hasClass('open')){$(this).children('.mod_acc-body').show();}
});
$bd.on('click','.mod_acc-head',function(){
let $papa = $(this).closest('.mod_acc');
let $accBody = $papa.children('.mod_acc-body');
$papa.toggleClass('open');
if($accBody.is(':hidden')){
$accBody.slideDown('normal');
} else {
$accBody.slideUp('normal');
}
});