滚动页面时如何使 <div> 上下移动?

IT技术 javascript jquery css html
2021-02-21 04:44:51

当用户滚动页面时,如何使 div 元素在页面上上下移动?(该元素始终可见)

6个回答

您希望将固定属性应用于元素的位置样式。

position: fixed;

你用的是什么浏览器?并非所有浏览器都支持 fixed 属性。阅读更多关于谁支持它,谁不支持它以及一些在这里工作的信息

http://webreflection.blogspot.com/2009/09/css-position-fixed-solution.html

我希望我可以下载赞成的评论。解雇供应商并继续前进,这将是值得的。或者说服管理层这样做,如果不仅仅是因为供应商未能支持新浏览器。
2021-04-21 04:44:51
@Jason,尽管我全心全意同意这种观点,但在企业环境中,这可能不是一种选择。一些公司由于各种原因不能/不会升级(例如在技术上被供应商扣为人质……下一个故事)。如果他/她需要支持它,那么他/她需要支持它。
2021-04-23 04:44:51
@Jason 完全同意 - 坦率地拧 IE6 并拧微软,因为它推出了如此垃圾的不符合 W3C 的浏览器来折磨我们!如果所有网站都不支持,公司就会适应。
2021-05-17 04:44:51

只是为了一个更动画和可爱的解决方案:

$(window).scroll(function(){
  $("#div").stop().animate({"marginTop": ($(window).scrollTop()) + "px", "marginLeft":($(window).scrollLeft()) + "px"}, "slow" );
});

和那些想看的人的笔:http : //codepen.io/think123/full/mAxlb和叉子:http : //codepen.io/think123/pen/mAxlb

更新:和非动画 jQuery 解决方案:

$(window).scroll(function(){
  $("#div").css({"margin-top": ($(window).scrollTop()) + "px", "margin-left":($(window).scrollLeft()) + "px"});
});
非常好。我正在使用 JQueryUI.resizable 并且它不适用于固定元素,所以这是一个很好的选择,谢谢。
2021-04-25 04:44:51
@QF_Developer 完全不用担心。
2021-05-04 04:44:51
@think123 任何使用 jquery 但没有动画的解决方法。
2021-05-06 04:44:51
@lk.annamalai 不用担心。
2021-05-09 04:44:51

position:fixed当您的页面顶部没有标题或徽标时,单独使用就可以了。此解决方案将考虑窗口滚动的距离,并在您滚动超过标题时移动 div。当您再次到达顶部时,它会将其锁定回原位。

if($(window).scrollTop() > Height_of_Header){
    //begin to scroll
    $("#div").css("position","fixed");
    $("#div").css("top",0);
}
else{
    //lock it back into place
    $("#div").css("position","relative");
}

这是 Jquery 代码

$(document).ready(function () {
     var el = $('#Container');
        var originalelpos = el.offset().top; // take it where it originally is on the page

        //run on scroll
        $(window).scroll(function () {
            var el = $('#Container'); // important! (local)
            var elpos = el.offset().top; // take current situation
            var windowpos = $(window).scrollTop();
            var finaldestination = windowpos + originalelpos;
            el.stop().animate({ 'top': finaldestination }, 1000);
        });
    });

只需添加position: fixed;您的 div 样式。

我已经检查过它在我的代码中工作正常。

position: fixed当您希望 div 仅随滚动条之一(X 或 Y)移动时,这是不够的。已接受的答案是完美的。如果您只需要水平滚动,只需删除 marginTop。如果您只需要垂直,请删除 marginLeft。
2021-04-25 04:44:51