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