淡入具有相同 class 的元素仅当它们的中间到达视口时使用 jQuery waypoints
Fade in elements with the same class only when their middle reach the viewport using jQuery waypoints
我有一个由许多部分组成的单页网站。我想使用 jQuery Waypoints 使其更具动态性。
应该是什么样子:
每次带有 class 淡入元素 的元素进入视口(有一些偏移)时,它会得到一个特殊的 class 动画(淡入淡出)- 中的元素,但只有具有 class 且当前在视口中可见的一个元素。
我的收获:
当带有 class 的第一个元素进入视口时,带有 class 的所有元素淡入。
HTML:
<section>Some content</section>
<section>
<div class="container fade-in-element">
<div class="row">
<div class="col-sm-4"> SOME CONTENT </div>
<div class="col-sm-4"> SOME CONTENT </div>
<div class="col-sm-4"> SOME CONTENT </div>
</div>
</div>
</section>
<section>
<div class="container fade-in-element">
<h1 class="heading">HEADING</h1>
<p>TEXT</p>
<p>TEXT</p>
</div>
</section>
CSS:
.淡入元素{
不透明度:0;
}
jQuery:
jQuery(document).ready(function ($) {
$(function () {
var inview = new Waypoint.Inview({
element: $('.fade-in-wrap')[0],
entered: function (direction) {
$('.fade-in-element').addClass('animated2 fadeInLeft');
},
offset: '50%'
});
});
});
有人帮忙吗?谢谢!
您应该将其包装在 if 中。您可以使用 $(window).width 和 .height. 检查 window 大小,使用 $(document).scrollTop 检查当前位置。您可以使用这些值设置边界框并检查 div 是否在里面。
var top = $(document).scrollTop();
var height = $(window).height();
$('.fade-in-wrap').each(function(){
var off = $(this).offset();
if(off.top > top && off.top < top+height) {
// Add the waypoint here. The element must be $(this)!
}
});
这就是你需要的
$('.fade-in-element').each(function(){
var _this = this;
var inview = new Waypoint({
element: _this,
handler: function (direction) {
$(this.element).animate({'opacity': 1})
},
offset: '50%'
});
});
这是一个demo
我有一个由许多部分组成的单页网站。我想使用 jQuery Waypoints 使其更具动态性。
应该是什么样子:
每次带有 class 淡入元素 的元素进入视口(有一些偏移)时,它会得到一个特殊的 class 动画(淡入淡出)- 中的元素,但只有具有 class 且当前在视口中可见的一个元素。
我的收获:
当带有 class 的第一个元素进入视口时,带有 class 的所有元素淡入。
HTML:
<section>Some content</section>
<section>
<div class="container fade-in-element">
<div class="row">
<div class="col-sm-4"> SOME CONTENT </div>
<div class="col-sm-4"> SOME CONTENT </div>
<div class="col-sm-4"> SOME CONTENT </div>
</div>
</div>
</section>
<section>
<div class="container fade-in-element">
<h1 class="heading">HEADING</h1>
<p>TEXT</p>
<p>TEXT</p>
</div>
</section>
CSS: .淡入元素{ 不透明度:0; }
jQuery:
jQuery(document).ready(function ($) {
$(function () {
var inview = new Waypoint.Inview({
element: $('.fade-in-wrap')[0],
entered: function (direction) {
$('.fade-in-element').addClass('animated2 fadeInLeft');
},
offset: '50%'
});
});
});
有人帮忙吗?谢谢!
您应该将其包装在 if 中。您可以使用 $(window).width 和 .height. 检查 window 大小,使用 $(document).scrollTop 检查当前位置。您可以使用这些值设置边界框并检查 div 是否在里面。
var top = $(document).scrollTop();
var height = $(window).height();
$('.fade-in-wrap').each(function(){
var off = $(this).offset();
if(off.top > top && off.top < top+height) {
// Add the waypoint here. The element must be $(this)!
}
});
这就是你需要的
$('.fade-in-element').each(function(){
var _this = this;
var inview = new Waypoint({
element: _this,
handler: function (direction) {
$(this.element).animate({'opacity': 1})
},
offset: '50%'
});
});
这是一个demo