JavaScript

初心者でもできる!CSS矢印アニメーションとjQuery slideToggle/toggleClassで作るFAQセクション

Webデザインの世界では、ユーザーの注意を引きつけ、同時に情報を整理する方法が常に求められています。FAQセクションは、その素晴らしい例です。
この記事では、CSS(矢印)とjQuery(slideToggle、toggleClass)を使用して、質問と回答が綺麗に整理され、かつインタラクティブに表示されるFAQセクションを作成する方法を紹介します。

CSSで矢印アイコンをデザイン

まずは、ユーザーが視覚的にFAQセクションを理解できるように、CSSを使って矢印アイコンをデザインしましょう。ここでは、矢印が質問の横に表示され、クリックすると回答が表示されるようにします。矢印のデザインとその挙動の変化がユーザーの興味を引きます。

下矢印(.qa .arrow::before)と上矢印(.qa .arrow.active::before)、質問エリア(.qa ul li)に対する回答エリア(.qa ul li:last-child)のCSS記述です。

<style>
body {
  font-size: 16px;
  text-align: center;
}
h1{
  text-align: center;
  font-size: 20px;
  padding: 20px 0;
  line-height: 1.8em;
}
.qa{
  width: 24%;
  margin: 0 auto 16px auto;
  position: relative;
}
.qa ul{
  width: 100%;
}
.qa ul li{
  width: 100%;
  font-size: 16px;
  padding: 10px 0;
  font-weight: bold;
  line-height: 1.8em;
  list-style: none;
  color: #007FFF;
  text-align: left;
}
.qa ul li:last-child{
  display: none;
  color: #FF0000;
}
.qa .arrow {
  position: absolute;
  top: 0;
  right: 0;
  width: 40px;
  height: 40px;
  z-index: 2;
  cursor: pointer;
  border-radius: 40px;
  border: solid 2px #FF0000;
  box-sizing: border-box;
}
.qa .arrow::before {
  border: solid #FF0000;
  border-width: 0 0 2px 2px;
  content: "";
  margin: auto;
  position: absolute;
  left: 11px;
  top: 8px;
  transform: rotate(-45deg);
  transition: .2s;
  width: 12px;
  height: 12px;
}
.qa .arrow.active {
  border-color: #007FFF;
}
.qa .arrow.active::before {
  top: 14px;
  border-color: #007FFF;
  transform: rotate(135deg);
  transition: .2s;
}
</style>

質問と回答エリアのHTML構造

次に、HTMLを使って質問と回答の構造を作ります。見出しタグを活用してセクションを明確にし、リストタグを使って質問と回答を整理しましょう。矢印アイコンと連動するように、HTML要素を配置します。

質問エリア(.qa ul li)に対する回答エリア(.qa ul li:last-child)と矢印エリア(.arrow)を用意しました。

<h1>
slideToggle、toggleClassを使ってCCS矢印の上下アニメーションと<br>
質問に対する回答エリアの表示・非表示の演出を行います。<br>
右下の印をクリックして見て下さい。
</h1>

<div class="qa">
  <div class="arrow"></div>
  <ul>
    <li>
      質問のタイトルをココに書きます。
    </li>
    <li>
      質問の回答文言をココに書きます。<br>
      質問の回答文言をココに書きます。<br>
      質問の回答文言をココに書きます。<br>
      質問の回答文言をココに書きます。<br>
      質問の回答文言をココに書きます。<br>
      質問の回答文言をココに書きます。
    </li>
  </ul>
</div>

jQueryでインタラクティブな動きを加える:JavaScript記述

jquery-3.7.1.min.jsファイルを読み込みます。矢印(.qa .arrow)をクリックするとslideToggle、toggleClassを使ってタグエリアのToggle操作を行ってます。

ここで重要なのが、jQueryを使って、質問エリアと回答エリアの表示・非表示を切り替えるインタラクションです。.slideToggleと.toggleClassメソッドを使用して、ユーザーが矢印をクリックした時に滑らかなアニメーションとともに情報が表示されるようにします。

<script src="jquery-3.7.1.min.js"></script>
<script>
$(function () {
  $(".qa .arrow").on("click", function () {
    $(this).next("ul").children("li:last-child").slideToggle(300);
    $(this).toggleClass("active", 300);
  });
});
</script>

slideToggle、toggleClassを使ってCCS矢印アニメーションと回答エリアの表示・非表示演出のデモページ

実際のコードとその効果を見るために、デモページを設けています。以下デモページを通じて、実際にどのように動作するのかを体験してもらい、実際のプロジェクトに応用してもらえればと思います。

slideToggle、toggleClassを使ってCCS矢印アニメーションと回答エリアの表示・非表示演出のデモページ

まとめ

インタラクティブなFAQセクションは、ユーザーがWebサイトでの体験を向上させるために必要なページです。CSSとjQueryを駆使して、魅力的で、使いやすいFAQページを作成しましょう。この記事がその一助となれば幸いです。

※流用される場合は自己責任でお願いします。
デモページheadタグ内のGoogleアナリティクスタグは流用しないで下さい。