【发布时间】:2017-08-29 03:29:45
【问题描述】:
成功:以下代码有效。当 div 滚动到视图中时,它将激活 css(出现、动画等)。
问题:我只希望它触发一次(我不希望它在您滚动过去时再次隐藏或重置)。
代码如下:
;(function($) {
$.outOfView = {
init: function() {
$("[data-outofview]").css('transition', 'none').addClass('outofview');
window.setTimeout(function(){
$("[data-outofview]").css('transition', '');
$.outOfView.scroll();
}, 100);
}
, scroll: function() {
var $window = $(window)
, scrolled = $(window).scrollTop()
, windowHeight = $(window).height();
$("[data-outofview].outofview").each(function() {
var $this = $(this)
, dataCoefficient = $(this).data('outofview-coefficient')
, coefficient = dataCoefficient ? parseInt(dataCoefficient, 10) / 100 : 1
, windowHeightPadded = windowHeight * coefficient
, offsetTop = $this.offset().top
, offsetBottom = offsetTop + $this.outerHeight() * coefficient;
// If the distance from the bottom of the element to the top of the document
// is greater than the distance from the top of the window to the top of the
// document, OR the distance from the top of the element is less than the distance
// from the bottom of the window to the top of the document... remove the class.
// The element is in view.
if ( scrolled < offsetBottom || scrolled + windowHeightPadded > offsetTop) {
if ($this.data('outofview-timeout')) {
window.setTimeout(function() {
$this.removeClass('outofview');
}, parseInt($this.data('outofview-timeout'), 10));
} else {
$this.removeClass('outofview');
}
}
});
// Hidden...
$("[data-outofview]:not(.outofview)").each(function () {
var $this = $(this)
, dataCoefficient = $(this).data('outofview-coefficient')
, coefficient = dataCoefficient ? parseInt(dataCoefficient, 10) / 100 : 1
, windowHeightPadded = windowHeight * coefficient
, offsetTop = $this.offset().top
, offsetBottom = offsetTop + $this.outerHeight() * coefficient;
// If the distance from the bottom of the element to the top of the document
// is less than the distance from the top of the window to the top of the
// document, OR the distance from the top of the element is greater than the distance
// from the bottom of the window to the top of the document... add the class.
// The element is out of view.
if ( scrolled > offsetBottom || scrolled + windowHeightPadded < offsetTop) {
$(this).addClass('outofview');
}
});
}
};
// Reveal animations as they appear on screen
$(window).on('scroll', $.outOfView.scroll);
$.outOfView.init();
})(jQuery);
您能提供的任何帮助将不胜感激。虽然我以前定制过代码,但我不是专家。
【问题讨论】:
-
有一个值为
false的flag,一旦触发,然后将flag 值更改为true并检查您的相同条件代码。 -
这听起来很有希望 Shiladitya。我仍然是 jQuery 的新手。这在代码中看起来如何?