新年あけましておめでとうございます。
今年もよろしくお願い致します。
さて宣言通り週一で更新していきますよ。
新年一発目はみんな大好きjQuery!
泣く子も黙るドロップダウンメニュー!
デモ
See the Pen jWypXb by mitsuki sagayama (@sagayama) on CodePen.
3階層目以降は対応しないよ!テヘッ
html
普通にulを入れ子で書いていくだけですが、もちろん3階層目以降は対応しませんので。
head内に
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script> <script> $(function(){ $('.menu li').hover(function(){ $("ul:not(:animated)", this).slideDown(); }, function(){ $("ul.child",this).slideUp(); }); }); </script>
body内に
<ul class="menu"> <li><a href="#">menu01</a> <ul class="child"> <li><a href="#">menu01-1</a></li> <li><a href="#">menu01-2</a></li> <li><a href="#">menu01-3</a></li> </ul> </li> <li><a href="#">menu02</a> <ul class="child"> <li><a href="#">menu02-1</a></li> <li><a href="#">menu02-2</a></li> <li><a href="#">menu02-3</a></li> </ul> </li> <li><a href="#">menu03</a> <ul class="child"> <li><a href="#">menu03-1</a></li> <li><a href="#">menu03-2</a></li> <li><a href="#">menu03-3</a></li> </ul> </li> </ul>
これだけでそれなりの動きはします。
CSS
即興で書いたので整理できてません。
ul { list-style:none; &.menu { li { float:left; a { display:block; padding:1em; text-decoration:none; width:150px; text-align:center; background:#777; color:#fff; border:1px solid #000; border-left:none; &:hover { background:#eee; color:#000; } } } } &.child { display:none; li { float:none; a { border:none; background:#eee; color:#000; border-bottom:1px dotted #ccc; &:hover { background:#777; color:#fff; } } } } }
コピペ用CSS
ul { list-style: none; } ul.menu li { float: left; } ul.menu li a { display: block; padding: 1em; text-decoration: none; width: 150px; text-align: center; background: #777; color: #fff; border: 1px solid #000; border-left: none; } ul.menu li a:hover { background: #eee; color: #000; } ul.child { display: none; } ul.child li { float: none; } ul.child li a { border: none; background: #eee; color: #000; border-bottom: 1px dotted #ccc; } ul.child li a:hover { background: #777; color: #fff; }
まとめ
CSSだけでドロップダウンメニューとかありますが、ブラウザ対応の調整が大変です。
そういう時はjQueryに頼るのもいいもんです。
要は使い所。
CSSでできたからスゴイ!じゃなくてねっ!