【发布时间】:2010-12-10 23:12:52
【问题描述】:
当用户滚动页面时,如何使 div 元素在页面上上下移动? (该元素始终可见)
【问题讨论】:
标签: javascript jquery css html
当用户滚动页面时,如何使 div 元素在页面上上下移动? (该元素始终可见)
【问题讨论】:
标签: javascript jquery css html
您想将固定属性应用到元素的位置样式。
position: fixed;
您使用的是什么浏览器?并非所有浏览器都支持固定属性。阅读更多关于谁支持它,谁不支持它以及一些工作在这里
http://webreflection.blogspot.com/2009/09/css-position-fixed-solution.html
【讨论】:
您可能想查看 Remy Sharp 的 recent article on fixed floating elements at jQuery for Designers,它有一个很好的视频和关于如何在客户端脚本中应用此效果的文章
【讨论】:
只是为了更生动可爱的解决方案:
$(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"});
});
【讨论】:
只需在您的 div 样式中添加 position: fixed;。
我已经检查过了,它在我的代码中运行良好。
【讨论】:
position: fixed 当您希望您的 div 仅与其中一个卷轴 X 或 Y 一起移动时是不够的。接受的答案是完美的。如果您只需要水平滚动,只需删除 marginTop。如果您只需要垂直,请删除 marginLeft。
当您的页面顶部没有标题或徽标时,单独使用 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);
});
});
【讨论】: