CSSのみでアコーディオンを実装しましたが、ハマってしまったので、メモ。
display:noneは使わず、height、opacity、overflow、visibilityを使う
htmlは記事下部にあるgitをご覧ください。
CSSの例
#navi-menu-submenu1 {
height: 0;
opacity: 0;
overflow: hidden;
transition:
height .3s linear,
opacity 0s linear .3s,
visibility 0s linear .3s;
visibility:hidden;
}
#navi-menu-input-submenu1:checked ~ #navi-menu-submenu1 {
height: 184px;
opacity: 1;
transition:
height .3s linear,
opacity .3s linear,
visibility .3s linear;
visibility: visible;
}
display:noneは、アニメーションしない
アコーディオンを実装するとき、アニメーションなしであれば、display:noneを使うのが簡単です。
CSSの例
#navi-menu-submenu1 {
display: none;
}
#navi-menu-input-submenu1:checked ~ #navi-menu-submenu1 {
display: block;
}
display:noneでアニメーションする方法はありますが、開くときはアニメーション。閉じるときはアニメーションできません。
CSSの例
navi-menu-submenu1 {
display: none;
height: 0;
opacity: 0;
}
navi-menu-input-submenu1:checked ~ #navi-menu-submenu1 {
display: block;
height: 184px;
opacity: 1;
animation-duration: 0.7s;
animation-name: fade-in;
}
@keyframes fade-in {
0% {display:block;opacity:0;height:0;}
100% {display:block;opacity:1;height:184px;}
}


