所以我使用固定的侧边栏,当它到达某一点时,交换到绝对值以阻止它滚动并将其留在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; }
编辑:对于对此感兴趣的任何人,我完成了这个功能,该功能在加载时调整侧边栏的大小,然后调整大小以及更新侧边栏在加载和调整大小时需要滚动的位置。< /强>
答案 0 :(得分:1)
更新变量不会更改已使用该变量的代码。您需要再次运行代码以设置新高度。
function updateHeight() {
var offsetHeight = document.getElementById('main-column').offsetHeight;
document.getElementById('main-sidebar').style.height = offsetHeight+'px';
}
$(window).resize(updateHeight).trigger('resize')
// If you need the timeout logic
// updateHeight()
// $(window).resize(function() {
// updateHeight()
// clearTimeout(this.id);
// this.id = setTimeout(doneResizing, 500);
// });