基于滚动百分比的动画翻译
jQuery Animate translateY Based On Scroll Percentage
我试图在没有任何插件的情况下建立一个简单的重叠"视差"效果。我有这样的html:
<section>
<h2>Example Text</h2>
</section>
<section>
<h2>Example Text</h2>
</section>
<section>
<h2>Example Text</h2>
</section>
<section>
<h2>Example Text</h2>
</section>
<section>
<h2>Example Text</h2>
</section>
每个部分的高度为视窗的100%。我在$(window).scroll()
中使用每个循环。我需要动画的transform: translateY()
属性的顶部部分,直到以下部分是在浏览器的顶部。这个百分比基本上需要基于浏览器顶部的百分比。我尝试了一些事情,包括获得offset().top
和height()
值,并将它们与$(window).scrollTop()
进行比较,但我似乎无法解决。这是我试图实现的效果,虽然它使用jQuery插件。
编辑我现在差不多解决了,但我有一个小问题回到顶部。translate
属性不会一直回到0%,并在顶部留下一个空白。
我的合作者:http://codepen.io/mdmoore/pen/MwjoLZ
$(function(){
$('section').each(function() {
var off = $(this).offset().top
$(this).data('orig-offset', off);
});
$(window).scroll(function(){
var scrollTop = $(window).scrollTop();
$('section').each(function(){
var off = $(this).data('orig-offset');
var translate = (scrollTop - off) / $(window).height() * 100;
if (scrollTop >= off) {
$(this).css({transform: 'translateY(' + translate +'%)'});
}
});
});
});
有一种方法。如果你愿意,可以随意优化它。
$(function(){
$('section').each(function() {
var off = $(this).offset().top
$(this).data('orig-offset', off);
});
$(window).scroll(function(){
var scrollTop = $(window).scrollTop();
$('section').each(function(){
var off = $(this).data('orig-offset');
if (scrollTop >= off) {
var translate = (scrollTop - off) / $(window).height() * 100;
console.log(translate);
$(this).css({transform: 'translateY(' + translate +'%)'});
}
});
});
});
html, body {
height: 100%;
margin: 0;
}
h2 {
margin: 0;
text-align: center;
}
section {
background: #000;
height: 100%;
width: 100%;
position: relative;
top: 0;
}
section:first-of-type {
background-color: coral;
}
section:nth-of-type(2) {
background-color: lightgreen;
}
section:nth-of-type(3) {
background-color: lightblue;
}
section:nth-of-type(4) {
background-color: #ffff6e;
}
section:nth-of-type(5) {
background-color: #3c3c3c;
color: white;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<section class="top">
<h2>Some Text</h2>
</section>
<section>
<h2>Some Text</h2>
</section>
<section>
<h2>Some Text</h2>
</section>
<section>
<h2>Some Text</h2>
</section>
<section>
<h2>Some Text</h2>
</section>
相关文章:
- 如何设置html元素填充的动画
- 如何使用动画实现纸张推车
- 如何在生成下载文件时显示加载动画
- 剑道网格jQuery动画()问题
- EaseJS拖放;放下(动画CC)电影剪辑的鼠标坐标
- 使用javascript可以设置css动画的当前百分比
- 在一定百分比上禁用引导进度条的平滑动画过渡
- 制作jQuery高度百分比动画
- 图表.js动画进度进度百分比
- jQuery使用calc作为值(从百分比中减去px)对位置进行动画处理
- 使javascript动画条与动画百分比同步
- 滚动到顶部,动画为百分比
- 函数.动画百分比不起作用
- 边缘动画自定义百分比预加载程序
- jQuery:如何使用一个元素的百分比宽度作为动画另一个元素的值,并确保它的工作,即使在调整窗口的大小
- 在Android Native Browser (4.x)上动画化翻译百分比
- CSS圆圈动画显示百分比
- 如何显示网站加载的百分比,而不是gif或任何动画图像
- 我可以用JavaScript检测CSS关键帧动画中的百分比
- 基于滚动百分比的动画翻译