jqueryで作るスライドするプルアップメニュー(プルダウンメニュー)
ただただスライドするだけのプルアップメニューの作り方。
まえがき
ただスライドするだけのプルアップメニューが欲しかったんだけど、
人様が公開してる様な高機能なjsを使うのもな~って事で、
プログラム6行でできるプルアップ(まぁプルダウンでもいいんだけどw)メニュー
まぁ6行っていってもjquery使ってるんだけどね。
あっ、解説なんかイランからとっととサンプル見せろ!って人は
DEMO
↑どうぞ。
6行でできるスライドするプルアップメニュー(プルダウンメニュー)のコード
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta http-equiv="Content-Style-Type" content="text/css" /> <meta http-equiv="Content-Script-Type" content="text/javascript" /> <title>スライドするプルアップメニューサンプル</title> <script type="text/javascript" src="http://www.google.com/jsapi"></script> <script type="text/javascript" charset="utf-8"> <!-- google.load("jquery", "1"); --> </script> <script type="text/javascript"> <!-- $(function(){ $("ul.sub_list").hide(); $("ul#ul_menu>li").hover(function(){ $("ul:not(:animated)",this).slideDown() }, function(){ $("ul",this).slideUp(); }) }) --> </script> <style type="text/css"> #ul_menu{ position:relative; width:400px; list-style:none; text-align:center; top:100px; } #ul_menu li{ width:200px; float:left; position:relative; } #ul_menu li a{ width:198px; background:#EE0088; float:none; height:30px; display:block; border:1px solid #FCF; color:#FFF; } .sub_list { bottom: 32px; left: 0; position: absolute; text-align: center; list-style:none; padding-left:0; } </style> </head> <body> <h1>スライドするプルアップメニューサンプル</h1> <ul id="ul_menu" class="sp_list"> <li><a href="#">コンテンツ1</a> <ul class="sub_list"> <li><a href="#">コンテンツ1-1</a></li> <li><a href="#">コンテンツ1-2</a></li> <li><a href="#">コンテンツ1-3</a></li> </ul></li> <li><a href="#">コンテンツ2</a> <ul class="sub_list"> <li><a href="#">コンテンツ2-1</a></li> <li><a href="#">コンテンツ2-2</a></li> <li><a href="#">コンテンツ2-3</a></li> </ul></li> </ul> </body> </html>
↑サンプルのhtmlコードです。
それぞれ説明していきます。
javascriptの
2行目の
$("ul.sub_list").hide();
でプルアップで出てくるサブメニューを非表示にしーの(cssでdisplay:none;指定してあげても可)
3~行目の
$("ul#ul_menu>li").hover(function(){ $("ul:not(:animated)",this).slideDown() }, function(){ $("ul",this).slideUp(); })
でul id=”menu”の直下のliをさわった時と離れたときの動作を指定します。
ul:not(:animated)
これはアニメーションが起こっていない時だけ動作させるための指定です。
cssの
.sub_list { bottom: 32px; left: 0; position: absolute; text-align: center; list-style:none; padding-left:0; }
プルアップで出てくるサブメニューのスタイル。
配置場所に関して「position」を使っています。
そして、
「bottom:32px」
この指定をtopに変えるとjqueryの「slideDown」が上から下へスライドする様になります。
もちろん「slideUp」の動作も合わせて逆になります。
それを利用してプルアップ、プルダウンを使い分けてください。