[JS覚書]Q&AページでJqueryのアコーディオン仕様を実装
量多めのQ&AページでJqueryのアコーディオン仕様を実装してみました。
前から目を付けていたのですが、ちゃんと実装したのは今回初めてかも。
実装自体は割と簡単なのですが、クリックしたら開くよ!と自然にわかるデザインにする方がメインな作業ですな。
仕様はこちらのページを参考にしました。JSの細かい説明と色々なバージョンも載せてくれてるとこがありがたい。
jQueryでの開閉式のアコーディオンの動きいろいろ | CSS Lecture
jQueryでの開閉式のアコーディンの動きいろいろのデモページ|CSS Lecture
[JS]タブ式メニューとアコーディオンをつかったサンプル | CSS Lecture
[JS]タブ式メニューとアコーディオンをつかったサンプルのデモページ|CSS Lecture
スクリプト部分
faqというスラッグを付けた固定ページという設定で条件分岐で挟んであります。
<?php if(is_page(faq)): ?>
<script type="text/javascript" src="jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$('.accordion_head').click(function() {
$(this).next().slideToggle();
}).next().hide();
});
</script>
<?php endif; ?>
slideToggle()の中に’slow’(遅い)、’nomal’(普通(指定なしと同じ))、’fast’(早い)を入れるとスライドスピードも変えられます。
<p>※クリックして回答をご覧下さい。</p> <div class="ac"> <h4 class="accordion_head">ここに質問が入ります。</h4> <p>ここに解答が入ります。</p>
この場合pの中身に新たなタグは入れられないです。
CSS記述
div class=”ac”で囲っちゃって、pに一気にスタイル付けをしています。
div.entry h4.accordion_head {
cursor:pointer;
background-image:url(images/custom/md_h4_ac.png);
background-repeat:no-repeat;
color:#066;
padding-left:40px;
border:none;
margin-bottom: 5px;
}
div.ac p {
background:url(images/custom/back_p_ac.png);
background-repeat:no-repeat;
padding-left:40px;
font-size:14px;
min-height:30px;
margin-bottom:30px;
}
以下のページがデザイン的には参考になりました。
Javascriptによるアコーディオンのサンプルサイト5つ | Webデザインのレシピ
CSS3とhtml5仕様
今後の参考にCSS3とhtml5仕様のものです。
デザインも美しい、アニメーションで開閉するアコーディオンを実装するチュートリアル | コリス
カッコよくデザインされたピュアCSS3なアコーディオン実装デモ:phpspot開発日誌
おまけ:内容divバージョンのcss(20121101追記)
スライドで開く内容が多めのバージョン。div.conventionとしました。
div.entry div.ac h2.accordion_head {
background-image:url(images/custom/ac_h2_back.gif);
cursor:pointer;
color:#036;
border:none;
margin-bottom: 5px;
padding-left:30px;
}
div.entry div.ac h2.accordion_head:hover {
background-image:url(images/custom/ac_h2_back_on.gif);
cursor:pointer;
}
div.ac div.convention {
margin-bottom:30px;
}




横浜在住。Web制作の仕事をしているへっぽこワーキングマザーです。6歳児に育てられています。







ディスカッション
ピンバック & トラックバック一覧
[…] [JS覚書]Q&AページでJqueryのアコーディオン仕様を実装 – ponnao-clip […]