调整大小不适用于我的身高计算

时间:2017-07-12 15:39:57

标签: javascript jquery html css css-position

所以我使用固定的侧边栏,当它到达某一点时,交换到绝对值以阻止它滚动并将其留在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; }

编辑:对于对此感兴趣的任何人,我完成了这个功能,该功能在加载时调整侧边栏的大小,然后调整大小以及更新侧边栏在加载和调整大小时需要滚动的位置。< /强>

enter image description here

1 个答案:

答案 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);
// });