The current article
ブラウザ幅(ブレイクポイント)でタブメニューからアコーディオンメニューに切り替えるjQuery
スマートフォン等で閲覧した時、タブメニューからアコーディオンメニューへ、レスポンシブに変わってくれると使いやすくなりますよね。
シンプルなコードで動作しますので、備忘録を兼ねてご紹介します。
capture
参照サイト:Easy Responsive Tabs to Accordion
ダウンロード:Download
デモページ DEMO
ダウンロード
上記ダウンロードから「Easy Responsive Tabs to Accordion」フォルダをダウンロードします。
(GitHubに登録されていない方は、右下の「Download ZIP」からどうぞ)
解凍すると色々入っていますが、
・JSフォルダ内 easyResponsiveTabs.js
・CSSフォルダ内 easy-responsive-tabs.css
の2つで動くと思います。
設置
head内に、CSSとjQuery本体を読み込ませ、スクリプトを記述します。
<link rel="stylesheet" type="text/css" href="style/easy-responsive-tabs.css" /> <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.1/jquery.min.js"></script> <script src="js/easyResponsiveTabs.js" type="text/javascript"></script> <script type="text/javascript"> $(document).ready(function () { $('#horizontalTab').easyResponsiveTabs({ type: 'default', //Types: default, vertical, accordion width: 'auto', //auto or any width like 600px fit: true, // 100% fit in a container closed: 'accordion', // Start closed if in accordion view }); </script>
簡単な説明ですが、
1行目、スタイルシートを読み込み、
2行目、jQuery本体を読み込み、
3行目、スクリプト本体を読み込み
となります。
4行目以下で、セレクタ名の指定と、オプションを指定します。
6行目で、梱包するセレクタを指定(今回は「#horizontalTab」)
7行目、「default」は横並びのタブ、「vertical」は縦並びのタブ、「accordion」は常にアコーディオン、
8行目、横幅を指定、px幅に変更も可、
9行目、親要素に合わせるかどうか、
10行目、アコーディオン表示時、閉まった状態
となります。
HTML
HTML内に以下を記述します。
<div id="horizontalTab"> <ul class="resp-tabs-list"> <li>情報その1</li> <li>情報その2</li> <li>情報その3</li> <li>情報その4</li> </ul> <div class="resp-tabs-container"> <div> <p>情報その1の内容</p> </div> <div> <p>情報その2の内容</p> </div> <div> <p>情報その3の内容</p> </div> <div> <p>情報その4の内容</p> </div> </div> </div>
1行目のセレクタ名をスクリプトと合わせてください。
後はリストに、タブ用のタイトルを入れて、「div」毎に内容を記述してください。
CSS
ちなみにDEMOページは、別シートでスタイルをあてていますが、以下の様な感じです。参考まで。
/* tab to accordion ===========================================================*/ h3 { color:#F15A24;} .demo { width: 980px; margin: 0px auto 30px;} .demo ul { margin-bottom:16px;} .demo li { list-style:square inside;} .note { position:relative; color:#333; overflow:hidden;} .note:after { content:""; position:absolute; bottom:0; right:0; border-width:30px 30px 0 0 ; /* This trick side-steps a webkit bug */ border-style:solid; border-color:#39b5a4 #F5F5F5 #F5F5F5 #39b5a4; /* A bit more verbose to work with .rounded too */ background:#39b5a4; /* For Opera when also applying a border-radius */ display:block; width:0; /* Only for Firefox 3.0 damage limitation */ /* Optional: shadow */ -webkit-box-shadow:0 1px 1px rgba(0,0,0,0.3), -1px 1px 1px rgba(0,0,0,0.2); -moz-box-shadow:0 1px 1px rgba(0,0,0,0.3), -1px 1px 1px rgba(0,0,0,0.2); box-shadow:0 1px 1px rgba(0,0,0,0.3), -1px 1px 1px rgba(0,0,0,0.2); } @media only screen and (max-width: 768px) { .demo { margin: 5%; width: 90%;} .note { background: #39b5a4;padding-bottom:30px;} }
ブレイクポイントは768pxとなっています。
変更したい場合は、「easy-responsive-tabs.css」内の、167行目付近にある「@media only screen and (max-width: 768px)」を適宜変更してみてください。
(DEMOページの場合は、上記24行目も変更が必要です!)
以上、「ブラウザ幅(ブレイクポイント)でタブメニューからアコーディオンメニューに切り替えるjQuery」のご紹介でした。