私は一定のポイントに達すると絶対にスワップしてスクロールを止めてdivの下に残す固定サイドバーを使用しています。一旦上にスクロールすると、ページに固定されてスクロールされます。サイズ変更は私の高さ計算では機能していません
サイドバーのサイズをリサイズ時のサイズに合わせて変更したいのですが、現在はページを更新して新しいカラムサイズを取得する必要があります。
JS
<script type="text/javascript">
$(document).ready(function() {
var offsetHeight = document.getElementById('main-column').offsetHeight;
document.getElementById('main-sidebar').style.height = offsetHeight+'px';
$(window).resize(function() {
var offsetHeight = document.getElementById('main-column').offsetHeight;
clearTimeout(this.id);
});
$(window).bind('scroll', function() {
if($(window).scrollTop() >= 150 + $('#main-sidebar').offset().top + offsetHeight - window.innerHeight) {
$('.sidebar-wrap').addClass('scroll');
} else {
$('.sidebar-wrap').removeClass('scroll');
}
});
});
</script>
HTML
<div class="main-page">
<div class="row-2col-left">
<div class="column" id="main-column">
<?php
if (function_exists('yoast_breadcrumb')) {
yoast_breadcrumb('
<p id="breadcrumbs">','</p>
');
}
?>
<?php if (have_posts()) :
while (have_posts()) :
the_post();
the_content();
endwhile;
endif; ?>
</div>
<div class="sidebar" id="main-sidebar">
<div class="sidebar-wrap" id="sidebar-wrap">
<?php get_sidebar('sidebar-1'); ?>
<p>test</p>
</div>
</div>
</div>
</div>
CSS
/* Sidebar Styles */
.wrap .main-page .row-2col-left .sidebar {
position: relative; }
.wrap .main-page .row-2col-left .sidebar .sidebar-wrap {
position: fixed; }
.wrap .main-page .row-2col-left .sidebar .sidebar-wrap.scroll {
position: absolute;
bottom: 0; }
EDIT:このに興味がある人のために、私は負荷にして、両方のサイドバーのサイズを変更する機能を完了サイズ変更時に、サイドバーが必要とする位置の更新ロード時とサイズ変更時の両方でスクロールします。変数の更新
Fixed Sidebar with Relative height and Fluid Absolute Transitioning
がうまくまったく '存在しない「).Heightは、'、あなたが後で 'offsetHeight'と何もしない、'更新するつもりはない」メインsidebar' – epascarello
現在はメーンのサイズを更新しませんしかしサイドバーではサイズ変更しません。 –
私が述べた問題のため、.Heightはなく、変数を更新してもすでに実行された行は魔法のように更新されません。そのコードは完了し、変数を更新しても参照は変更されません。 – epascarello