0

左側に固定サイドバー、右側の列にページ コンテンツがある 2 列のレイアウトがあります。フッターも持っています。固定サイドバーを、ページ コンテンツ div の最後の座標まで右にスクロールしたい。

ただし、サイドバーの高さがページ コンテンツの高さよりも大きい場合は、新しい高さをページ コンテンツ div に自動的に割り当てる必要があります。このコードは最初のケース (コンテンツがサイドバーより高い) で機能しますが、2 番目のケースはページをもう一度リロードした場合にのみ機能します (たとえば、別のページからこの種のページに移動した場合、スクリプトは new を割り当てません)。高さですが、ページをリロードするとそうなります)

コードは次のとおりです。

 $(window).load(function(){
   var windw = this;
   var contentHeight = $('#content').height(); // fetch Сontent div height
   var sideHeight = $('.sidebar-nav-fixed').height(); // fetch sidebar div height
   $.fn.followTo = function ( pos ) {
       var $this = this,
           $window = $(windw);

       $window.scroll(function(e){
           if ($window.scrollTop() >= pos) {
               $this.css({
                   position: 'absolute',
                   top: pos
               });
           } else {
               $this.css({
                   position: 'fixed',
                   top: 100
               });
           }
       });
   };

if (sideHeight > contentHeight) {
   $('#content').css ({
   height: contentHeight + (sideHeight - contentHeight)
 }),
   contentHeight = $('#content').height() // Assign a new height to page content div
}
  $('.sidebar-nav-fixed').followTo(contentHeight - sideHeight);

});

何かアイデアがあれば本当に嬉しいですありがとう!

4

1 に答える 1

0

この問題を解決したようです。私のサイドバーには、動的に読み込まれる facebook ウィジェットがありました。そのため、ページを開くと、まだ読み込まれていないため、スクリプトは Facebook div の高さなしで高さをフェッチします。Facebookウィジェットがロードされた後、スクロールスクリプトをロードするためにいくつかの操作を行いました。

または、さらに良い方法 - このウィジェットをコンテナーに入れて、css で手動で高さを指定します。

于 2012-09-16T11:26:48.393 に答える