現在、jquery.inviewを使用して、特定の要素がブラウザーに完全に表示されていることを検出しています。私はこれを次のように正しく機能させています:
$('.exclusive').bind('inview',function(e, isInView, visiblePartX, visiblePartY) {
var elem = $(this);
if (elem.data('inviewtimer')) {
clearTimeout(elem.data('inviewtimer'));
elem.removeData('inviewtimer');
}
if (isInView) {
elem.data('inviewtimer', setTimeout(function() {
if (visiblePartY == 'top') {
elem.data('seenTop', true);
} else if (visiblePartY == 'bottom') {
elem.data('seenBottom', true);
} else {
elem.data('seenTop', true);
elem.data('seenBottom', true);
}
if (elem.data('seenTop') && elem.data('seenBottom')) {
elem.animate({ 'opacity' : 1}, 1000)
elem.unbind('inview');
}
}, 1000))
}
});
ただし、このコードを少し修正して、一致する要素が複数表示されている場合に、それぞれの間にわずかな遅延を伴って順次フェードインするようにします。そしてもちろん、ユーザーがビューポートを動かしてより多くの要素を表示する場合も、同じことを続けます。誰かが私を正しい方向に向けることができますか?
ありがとう、クリス