jquery 指定区域内随页面滚动悬浮

原理:根据可悬浮区域高度及距顶部距离,设置绝对定位 + 跟随滚动修改top

    var height=$('#floatLayer').height();//悬浮块高度
    var flyer = $('#baike_detail_main .detail_main .main_right .float_layer');//悬浮块
    var dingweitop = $('#baike_detail_main .detail_main').offset().top - 270;//悬浮区域距顶部高度
    var dingweibuttom = dingweitop + $('#baike_detail_main .detail_main').height() - height;//悬浮区域底部距页面顶部高度
    $(window).scroll(function(){
        console.log(height,dingweitop,dingweibuttom,$(window).scrollTop());// $(window).scrollTop();已滚动高度

        if(dingweitop < $(window).scrollTop() && $(window).scrollTop() <dingweibuttom){//区域内滚动则同时改变top值
            flyer.css('position','absolute');
            flyer.css('top',$(window).scrollTop()-dingweitop);
            console.log($(window).scrollTop()-dingweitop);
        }else if(dingweibuttom<$(window).scrollTop()){
            flyer.css('position','absolute');
        }else{
            flyer.css('position','unset');
        }
    })

 

 

下面方法有问题,用fixed很麻烦,还是absolute方便

大致原理,就是判断制定元素与顶部滚动距离,以下是简单的判断,显示会有点错位,还需要优化才能更流畅

(function () {
    $(window).scroll(function(){
        var height=$('#floatLayer').height();
        var flyer = $('#baike_detail_main .detail_main .main_right .float_layer');
        var dingweitop = $('#baike_detail_main .detail_main').offset().top - 270;
        var dingweibuttom = dingweitop + $('#baike_detail_main .detail_main').height() - height - 270;

        if(dingweitop < $(window).scrollTop() && $(window).scrollTop() <dingweibuttom){
            flyer.css('position','fixed');
        }else if(dingweibuttom<$(window).scrollTop()){
            flyer.css('position','absolute');
        }else{
            flyer.css('position','unset');
        }
    })

    // var height = {
    //     document: $(document).height(),// 窗口大小高度
    //     window: $(window).height(),//浏览器可视窗高度
    //     flayer: $('#baike_detail_main .detail_main .main_left').height(), //指定元素高度
    //     windowScrollTop: $(window).scrollTop(),// 滚动条的垂直位置。
    // };

})(jQuery);

 

posted @ 2019-07-30 15:41  梦忘川  阅读(1073)  评论(0编辑  收藏  举报