【jQuery】シンプルなアコーディオンメニュー
アコーディオン型のメニューというのはjQueryでよく見るプラグインの1つだと思います。
これを自分のサイトに取り込む場合、よさそうなのを探してくるのも手ですが、余計な機能がついていたり、そのせいで重くなったり、カスタマイズしようにも手を入れにくかったり、導入のためにjsファイルやcssファイル、画像の読み込みが増えたりします。
最低限の機能でいいのに…とか、カスタマイズしやすいのを…という場合を考えて、最低限の機能しかないものを書いてみました。
- 階層は2段まで。
- 親をクリックしたら子分がスライドして開くだけ。
- その他余計な機能なし。
DEMO
HTML
<ul id="menu">
<li><a href="#">トップ</a></li>
<li><div>日記</div>
<ul>
<li>2012/02</li>
<li>2012/01</li>
<li>2011/12</li>
<li>2011/11</li>
</ul>
</li>
<li><div>コラム</div>
<ul>
<li>jQuery</li>
<li>jQuery UI</li>
<li>jQueryMobile</li>
</ul>
</li>
<li><div>その他</div>
<ul>
<li>profile</li>
<li>Twitter</li>
<li>Facebook</li>
</ul>
</li>
<li><div>リンク</div></li>
</ul>
javascript
//プラグインを作って
(function($){
$.fn.extend({
"simpleMenu" : function() {
return this.each(function() {
$(this).addClass("simpleMenu");
$(this).find("li > div").on('click', function(){$(this).next("ul").slideToggle();}).next('ul').hide();
});
}
});
})(jQuery);
//使う
$(function(){
$('#menu').simpleMenu();
});
CSS
.simpleMenu,.simpleMenu ul{
list-style-type: none;
margin: 0;
padding: 0;
}
.simpleMenu > li{
padding:1px;
border-top:1px solid #cccccc;
border-left:1px solid #cccccc;
border-right:1px solid #cccccc;
width:150px;
text-indent:10px;
}
.simpleMenu > li > div{
cursor:pointer;
}
.simpleMenu > li:first-child{
border-radius:5px 5px 0px 0px;
}
.simpleMenu > li:last-child{
border-bottom:1px solid #cccccc;
border-radius:0px 0px 5px 5px;
}
.simpleMenu ul > li{
text-indent:30px;
padding:3px;
}
ライセンス
ライセンスを主張するほどのものではありませんが、書いておくとしたらパブリックドメインでお願いします。
コピー、改変、商用利用特に制限ありません。