【ソースコード】番外編:アコーディオンメニューの練習
style.css
style.css
@charset "UTF-8";
html {
font-size: 100%;
}
body {
background-color: #fffbef;
color: #000;
}
ul {
list-style: none;
}
.content {
max-width: 960px;
padding: 0 20px;
margin: 100px auto;
}
.title {
font-size: 2rem;
font-weight: normal;
margin-bottom: 50px;
}
#ac-menu li {
border-top: solid 1px #000;
}
#ac-menu li:last-child {
border-bottom: solid 1px #000;
}
#ac-menu .label {
cursor:pointer;
font-size: 1.125rem;
font-weight: bold;
padding: 40px 30px;
position: relative;
transition: .5s;
}
#ac-menu .label:hover {
background-color: #ffda5f;
}
/*
ラベル右側のアイコン「+」を設定
beforeが横棒
afterが縦棒
*/
#ac-menu .label::before,
#ac-menu .label::after {
content: '';
width: 20px;
height: 1px;
background: #000;
position: absolute;
top: 50%;
right: 5%;
transform: translateY(-50%);
}
#ac-menu .label::after {
transform: translateY(-50%) rotate(90deg);
transition: .5s;
}
/*
アコーディオンメニューが開いている場合
*/
#ac-menu .label.open {
/* ラベルの背景色を変更 */
background-color: #ffda5f;
}
#ac-menu .label.open::before {
/* ラベルアイコンの横棒を非表示 */
opacity: 0;
}
#ac-menu .label.open::after {
/* ラベルアイコンの縦棒を横向きに回転 */
transform: rotate(180deg);
}
/*
アコーディオンメニューのコンテンツ部分は、「display: none;」で非表示にしておく。
ラベルクリック時にjQueryの「 $(this).next().slideToggle();」で表示に切り替わる
*/
#ac-menu .detail {
border-top: solid 1px #ccc;
padding: 35px 30px;
display: none;
}
#ac-menu .detail dl {
display: flex;
flex-wrap: wrap;
}
#ac-menu .detail dt {
width: 20%;
font-weight: bold;
margin-bottom: 40px;
}
#ac-menu .detail dd {
width: 80%;
margin-bottom: 40px;
}
/*-------------------------------------------
SP
-------------------------------------------*/
@media screen and (max-width: 600px) {
#ac-menu .label {
padding: 40px 0;
}
#ac-menu .detail {
padding: 35px 0;
}
#ac-menu .detail dl {
flex-direction: column;
}
#ac-menu .detail dt {
width: 100%;
margin-bottom: 10px;
}
#ac-menu .detail dd {
width: 100%;
padding-left: 10px;
}
}