视差滚动:如何使父级高度缩小以适合内容?
Parallax scrolling: How can I make the parent height shrink to fit the content?
我正在尝试为文章创建视差滚动效果。这是我的 HTML:包含文章和页脚的主包装 div。文章的高度应始终与其子项占据的垂直高度 space 相匹配。
<div class="main-wrap">
<article>
<div class="hero">
<div class="hero__content">
<!-- content here -->
</div>
</div>
<div class="content">
<!-- content here -->
</div>
</article>
<footer>
<!-- content here -->
</footer>
</div>
现在,jQuery,我要添加这些视差效果:
$(window).scroll(function(){
var scrollPos = $(this).scrollTop();
// parallax the hero text in fromt of the background image
$('.hero__content').css({
'top' : (225-(scrollPos*.2)) + 'px'
});
// parallax the article-content in front of the hero
$('.content').css({
'top' : (0-(scrollPos*.5)) + 'px'
});
});
视差部分工作正常。问题是我需要缩小文章的高度。否则文章底部有空白space。
我在这里创建了一个 CodePen:http://codepen.io/anon/pen/XmrLxJ
文章被赋予红色背景颜色以显示额外的间距。我已经尝试为文章元素 CSS 提供 "inherit" 和 "auto," 的高度属性,但这不起作用。
T.L。 D.R。将行 'top' : (0-(scrollPos*.5)) + 'px'
更改为 'margin-top' : (0-(scrollPos*.5)) + 'px'
您的问题是您正在使用 javascript 更改元素的位置,并且由于它具有 relative
位置,因此该元素已从其原始位置移动,但在渲染其余部分时仍熟悉原始位置文档。
要解决这个问题,您可以为 属性 设置动画,它会移动文档中的元素,而不是仅仅移动它显示的位置。
我不知道我是否说清楚了,但是如果您将动画中的 属性 从 top
更改为 margin-top
,它就会起作用。
但是恕我直言,.article-content
的动画效果几乎不引人注意。我在你的代码笔中删除了它,但没有注意到其中的区别。
作为脚注,我将此库用于滚动效果,我发现它非常有用且易于使用。
http://prinzhorn.github.io/skrollr/
我正在尝试为文章创建视差滚动效果。这是我的 HTML:包含文章和页脚的主包装 div。文章的高度应始终与其子项占据的垂直高度 space 相匹配。
<div class="main-wrap">
<article>
<div class="hero">
<div class="hero__content">
<!-- content here -->
</div>
</div>
<div class="content">
<!-- content here -->
</div>
</article>
<footer>
<!-- content here -->
</footer>
</div>
现在,jQuery,我要添加这些视差效果:
$(window).scroll(function(){
var scrollPos = $(this).scrollTop();
// parallax the hero text in fromt of the background image
$('.hero__content').css({
'top' : (225-(scrollPos*.2)) + 'px'
});
// parallax the article-content in front of the hero
$('.content').css({
'top' : (0-(scrollPos*.5)) + 'px'
});
});
视差部分工作正常。问题是我需要缩小文章的高度。否则文章底部有空白space。
我在这里创建了一个 CodePen:http://codepen.io/anon/pen/XmrLxJ 文章被赋予红色背景颜色以显示额外的间距。我已经尝试为文章元素 CSS 提供 "inherit" 和 "auto," 的高度属性,但这不起作用。
T.L。 D.R。将行 'top' : (0-(scrollPos*.5)) + 'px'
更改为 'margin-top' : (0-(scrollPos*.5)) + 'px'
您的问题是您正在使用 javascript 更改元素的位置,并且由于它具有 relative
位置,因此该元素已从其原始位置移动,但在渲染其余部分时仍熟悉原始位置文档。
要解决这个问题,您可以为 属性 设置动画,它会移动文档中的元素,而不是仅仅移动它显示的位置。
我不知道我是否说清楚了,但是如果您将动画中的 属性 从 top
更改为 margin-top
,它就会起作用。
但是恕我直言,.article-content
的动画效果几乎不引人注意。我在你的代码笔中删除了它,但没有注意到其中的区别。
作为脚注,我将此库用于滚动效果,我发现它非常有用且易于使用。
http://prinzhorn.github.io/skrollr/