ページ途中で出てくるナビゲーションが、スクロールして画面の一番上に来ると
固定されて以降ずっとついてきます。
今回はナビゲーションで使用していますが、スクロールして要素が画面の
一番上の位置に来た時に固定されるので、サイドバーなどにも使えます。
▼以下が実際のソースサンプルです。
<script type="text/javascript" src="js/jquery-1.4.2.min.js"></script> <script type="text/javascript"> $(function($) { var nav = $('.nav'), offset = nav.offset(); $(window).scroll(function () { if($(window).scrollTop() > offset.top) { nav.addClass('fixed'); } else { nav.removeClass('fixed'); } }); }); </script>
▼CSS
<style type="text/css"> body, div, p, ul, li, h1, h2, h3, h4, h5, h6, embed, object { margin: 0; padding: 0; } body { background-color: #CCF; font: 100% Arial, Helvetica, sans-serif; } h1 { font-size: 200%; text-align: center; padding: 20px; height: 100px; } .clearfix:before, .clearfix:after { content:""; display:table; } .clearfix:after { clear:both; } #content { background: #fff; height: 1000px; margin: 0 auto 60px; width: 780px; } .nav { margin: 0 auto; width: 780px; background-color: #bbb; } .nav li { list-style: none; float: left; } .nav li a { text-decoration: none; color: #fff; padding: 10px 20px; display: block; } .nav li a:hover { background: #aaa; } .fixed { position: fixed; top: 0; } p{ text-align: center; padding-top: 350px; font-weight: bold; font-size: 36px; } </style>
▼HTML
<div id="content"> <div class="nav"> <ul class="clearfix"> <li><a href="#">MENU</a></li> <li><a href="#">MENU</a></li> <li><a href="#">MENU</a></li> <li><a href="#">MENU</a></li> </ul> </div> <p>sample</p> </div>
今回、参考にさせていただいたのは、
『ページ途中にあるグローバルナビなどをスクロール時にトップに固定するjQuery – WPC』さんです。
ありがとうございます。