【发布时间】:2012-07-09 16:45:54
【问题描述】:
我在左侧有一个 div,其中包括营业时间和天气。我希望该 div 根据用户滚动的方式向下和向上滚动。所以它会跟随页面上下移动。我将如何尝试?这是我的网站judystropicalgarden.com
谢谢
【问题讨论】:
-
“follow”是指它应该从字面上跟随鼠标吗?或者它应该在屏幕上保持可见,而不管滚动?
我在左侧有一个 div,其中包括营业时间和天气。我希望该 div 根据用户滚动的方式向下和向上滚动。所以它会跟随页面上下移动。我将如何尝试?这是我的网站judystropicalgarden.com
谢谢
【问题讨论】:
您可以使用 CSS 属性 Fixed,或者如果您需要更精细的调整,则需要使用 javascript 并跟踪定义用户代理滚动条位置的 scrollTop 属性(0 位于顶部... x 在底部)
.Fixed
{
position: fixed;
top: 20px;
}
或使用 jQuery:
$('#ParentContainer').scroll(function() {
$('#FixedDiv').css('top', $(this).scrollTop());
});
【讨论】:
absolute 而不是固定的。
这篇文章很旧,但我找到了一个完美的 CSS,我想分享它。
粘性元素根据滚动位置在相对和固定之间切换。它是相对定位的,直到在视口中遇到给定的偏移位置 - 然后它“粘”在适当的位置(如 position:fixed)。
div.sticky {
position: -webkit-sticky; /* Safari */
position: sticky;
top: 0;
background-color: green;
border: 2px solid #4CAF50;
}
【讨论】:
使用 CSS 样式,您可以定义某物的定位方式。如果您将元素定义为fixed,它将始终保持在屏幕上的相同位置。
div
{
position:fixed;
top:20px;
}
【讨论】:
更好的 JQuery 答案是:
$('#ParentContainer').scroll(function() {
$('#FixedDiv').animate({top:$(this).scrollTop()});
});
你也可以在 scrollTop 后面加一个数字,即 .scrollTop() + 5 给它 buff。
一个很好的建议是将持续时间限制为 100 并从默认摆动变为线性缓动。
$('#ParentContainer').scroll(function() {
$('#FixedDiv').animate({top:$(this).scrollTop()},100,"linear");
})
【讨论】:
position:fixed; 属性应该可以完成这项工作,我在我的网站上使用了它并且效果很好。 http://www.w3schools.com/css/css_positioning.asp
【讨论】: