为移动位置创建常量而不是变量

时间:2016-07-16 23:05:37

标签: javascript jquery css

我有元素我想在滚动到的时候做一个固定的位置。我可以做得很好,我的问题是,如何删除固定位置?

当滚动到达元素的偏移顶部时,我正在找到修复元素的位置。问题是,我不能再为元素的偏移顶部获取此数字,因为它现在已修复,滚动时数字会更改。那么我怎么能把它保持为常数,我尝试使用const和var,但区别。

scroll = $(window).scrollTop();

function tb_fix() {
    if($('#report_toolbar').length) {
        const POS = $('#report_toolbar').offset().top;
        if(scroll >= POS) {
            $('#report_toolbar').addClass('fixed');
            $('#tb_spacer').show();
        } else if(scroll < POS && $('#report_toolbar').hasClass('fixed')) {
            $('#report_toolbar').removeClass('fixed');
            $('#tb_spacer').hide();
        }
    }
}

1 个答案:

答案 0 :(得分:2)

在工具栏下方,您有#tb_spacer。这仍然是具有常量偏移的静态元素。试试这个:

function tb_fix() {
    if($('#report_toolbar').length) {
        pos = $('#report_toolbar').offset().top;
        pos2 = $('#tb_spacer').offset().top;
        if(scroll >= pos) {
            $('#report_toolbar').addClass('fixed');
            $('#tb_spacer').show();
        } 
        if(scroll < pos2 && $('#report_toolbar').hasClass('fixed')) {
            $('#report_toolbar').removeClass('fixed');
            $('#tb_spacer').hide();
        }
    }
}