Movable Type 備忘録

 ブラウザスクロールに連動するサイドバー

こんばんわ^^

以前にも同様のスクリプトをご紹介したことがあります。

今回ご紹介するのは jQuery を使ったものです。

サンプルを表示できませんでした。

上記は以下のページから入手することができます。

使い方

ブラウザスクロールに連動してサイドバーを連動させるには以下のコードで実現してます。

連動スクロール

  1. <script type="text/javascript">
  2.     $(function() {
  3.         var offset = $("#sidebar").offset();
  4.         var topPadding = 15;
  5.         $(window).scroll(function() {
  6.             if ($(window).scrollTop() > offset.top) {
  7.                 $("##sidebar").stop().animate({
  8.                     marginTop: $(window).scrollTop() - offset.top + topPadding
  9.                 });
  10.             } else {
  11.                 $("##sidebar").stop().animate({
  12.                     marginTop: 0
  13.                 });
  14.             };
  15.         });
  16.     });
  17. </script>

赤字の部分がスクロールに連動して移動させたいコンテナ ID になります。
ご使用のテンプレートに合わせて変更することになるかと。 そして、HTML は以下のようになります。

連動スクロール / HTML

  1. <div id="page-wrap">
  2.     <div id="main">
  3.       メインコンテンツ
  4.     </div>
  5.  
  6.     <div id="sidebar">
  7.       サイドバーのコンテンツ
  8.     </div>
  9. </div>

大まかには上記のような構造にする必要があります。
そしてもっとも重要な CSS を以下のようにスタイルすることで完了です。

連動スクロール / CSS

  1. #page-wrap {
  2.     width: 600px;
  3.     margin: 15px auto;
  4. }
  5. #main {
  6.     width: 390px;
  7.     float: left;
  8. }
  9. #sidebar {
  10.     width: 190px;
  11.     float: right;
  12. }

上記では page-wrap の横幅を赤字のように 600px としてます。
それに伴って main の横幅 390px( 青字 )と sidebar の横幅 190px( 緑字 )を足した合計が 600px 以内に収まるようにサイズ指定してます。
この合計が赤字の横幅を超えるようだと期待する動作をしませんのでご注意ください。

以上です。
お試しあれぇ。

 Trackback Pings(0)

No trackbacks found.

 Comments(0)

No comments found.

 Post a Comment

 

コメント用フィード