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アナリティクスタグは流用しないで下さい。