株式会社オートプロジェクト

Columnコラム
  • TOP
  • コラム一覧
  • 簡単! HTMLだけでアコーディオンメニューを作成する方法②|CSSでデザイン変更
2023年2月20日
簡単! HTMLだけでアコーディオンメニューを作成する方法②|CSSでデザイン変更

前回、「簡単! HTMLだけでアコーディオンメニューを作成する方法 ①」で、HTMLのみで作成する手順を紹介しました。気になる方は、前回の記事もご覧ください。

今回は、CSSでデザインを少し変更してみます。

デザイン変更する手順

①既存の矢印を非表示にする(既存の矢印でいい場合は必要ありません)

②カーソルポインターを変更(こちらはお好みで)

③アニメーションをつける(こちらもお好みで)

④上記を含めCSSでデザイン変更

①既存の矢印を非表示

矢印のデザインを変更するには、既存の矢印を一度非表示にする必要があります(既存のものでいい場合は、設定なしで構いません)。

/*Chrome, Safari用  既存の矢印削除 */

summary::-webkit-details-marker {
display: none;
}

Firefoxに対応するため、以下も追加してください。

/* Firefox用 既存の矢印削除*/

summary {
list-style: none;

}

②カーソルポインターを変更

クリックした際、分かりやすくするためにポインターを変更できます。

summary {
cursor: pointer;
}

③アニメーションをつける

heightプロパティとtransitionプロパティを設定することで、ゆっくり開閉する動きになります。

details {
height: 40px;
transition: .6s;
}
details[open] {
height: 90px;
}

詳細(隠している箇所)の箇所をふわっと出す場合。

details[open] p {
  animation: fadeIn .8s ease;

}
@keyframes fadeIn {
0% {
  opacity: 0;
  transform: translateY(-10px);
}
100% {
  opacity: 1;
  transform: none;
 }
}

④上記を含めCSSでデザイン変更

上記の設定を含め、CSSでデザインを変えていきます。

例として、下図のようなアコーディオンを作成します。例示の「Result」の中の「Run Pen」をクリックした後、「常に表示させておく項目」をクリックしてください。

See the Pen
Untitled
by 林 (@hayashi-akina)
on CodePen.


以下、HTMLとCSSです。

<details>
   <summary>常に表示させておく項目</summary>
   <p>ここに項目に対する内容などを記述する</p>
</details>
<details>
   <summary>常に表示させておく項目</summary>
   <p>ここに項目に対する内容などを記述する</p>
   </details>
<details>
   <summary>常に表示させておく項目</summary>
    <p>ここに項目に対する内容などを記述する</p>
 </details>
details {
  height: 40px;
  padding: 0px;
  transition: .6s;
  border: 1px solid #59b2e1;
  max-width: 350px;
  margin-top: 20px;
  border-radius: 3px;
  margin-left: 20px;
}
details[open] {
  height: 90px;
  max-width: 350px;
}
  summary::-webkit-details-marker {
  display: none;
}

summary {
  list-style: none;
  cursor: pointer;
  display: flex;
  justify-content:space-around;
  align-items: center;
  background: #59b2e1;
  max-width: 350px;
  height: 40px;
  border-radius: 1px;
  color: #fff;

}

summary::after {
  content: '';
  transform: translateY(-25%) rotate(45deg);
  width: 7px;
   height: 7px;
  margin-left: 10px;
  border-bottom: 3px solid #fff;
  border-right: 3px solid #fff;
  transition: transform .3s;
  display: inline-block;
}
details[open] summary::after {
   transform: rotate(225deg);
}
p {
  margin: 0;
  color: #333333;
  padding: 10px 30px;
}
details[open] p {
  animation: fadeIn .8s ease;
  margin-top:4px;
}
@keyframes fadeIn {
0% {
  opacity: 0;
  transform: translateY(-10px);
}
100% {
  opacity: 1;
  transform: none;
 }
}

まとめ

今回はCSSでデザイン変更しました。アコーディオンメニューはHTMLとCSSで簡単にできるので、ぜひ使ってみてください。