jqueryを使ったフローティングメニューの作り方【簡易版】
-
- カテゴリー:
- javascript
先日時間がない中で、「ワァーーーッ」ってなりながら使ったフローティングメニューのコードなんですが、忘れないようにメモ残しときます。
HTMLやCSSはサンプルで、実際のお仕事で使ったコードではないのですが、
以下、CSS
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
<style type="text/css"> #wrapper { width: 100%; text-align: center; } #content { margin: 0 auto; width: 980px; text-align: left; } #main { width: 660px; height: 1200px; text-align: center; background: #eeeeee; float: right; } #side { width: 300px; height: 360px; color: #ffffff; text-align: center; background: #990000; float: left; } #footer { margin: 0 auto; width: 980px; height: 360px; color: #ffffff; background: #333333; clear: both; } </style> |
以下、HTML
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<div id="wrapper"> <div id="content"> <div id="main"> フローティングメニューのです。 </div> <div id="side"> サイドコンテンツです。 </div> </div> <div id="footer"> フッターです。 </div> </div> |
で、jqueryが読み込まれていることが前提なのですが、以下javascriptのコードです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
$(function(){ // フローティングメニュー用処理 var floating = $("#side"); var offset = floating.offset(); var limit_pos = $("body").height() - ( $("#footer").height() + floating.height() ); // フッター崩れ防止 $(window).scroll(function() { if(limit_pos < $(window).scrollTop()) { return false; } if ($(window).scrollTop() > offset.top) { floating.stop().animate({ marginTop: $(window).scrollTop() - offset.top }); } else { floating.stop().animate({ marginTop: 0 }); }; }); }); |
上記の記述で、#sideがスクロールに合わせて移動します。
var limit_posはフッターなどの崩れ防止用です。
こちらがサンプルページ