2017-06-17 13 views
0

ビューポートに入るときに、次のpen by Bramusを使用してアニメーション(FadeInUp)divを使用しています。しかし、現在divは、divがビューポート内に完全に入るとフェードインし始めます。私が必要とするのは、divがビューポート内の特定のピクセルであるときにアニメーションを開始する柔軟性です。たとえば、ビューポートでdivが100ピクセルのとき、アニメーションFadeInUpが開始されます。どのように私は現在のコード/私が使用しているペンでこれを行うことができます(下記のコードを参照)?ビューポートへの特定のピクセルのアニメーション(Bramusによるペン)

これもパーセンテージで可能ですか? F.e.ビューポートでdivが20%のときアニメーションが始まりますか?

ありがとうございました。

jQuery(function($) { 

// Function which adds the 'animated' class to any '.animatable' in view 
var doAnimations = function() { 

// Calc current offset and get all animatables 
var offset = $(window).scrollTop() + $(window).height(), 
    $animatables = $('.animatable'); 

// Check all animatables and animate them if necessary 
$animatables.each(function(i) { 
var $animatable = $(this); 
if (($animatable.offset().top + $animatable.height() - 20) < offset) { 
$animatable.removeClass('animatable').addClass('animated'); 
     } 
}); 

}; 

// Hook doAnimations on scroll, and trigger a scroll 
$(window).on('scroll', doAnimations); 
$(window).trigger('scroll'); 

}); 

答えて

1

オフセットは既にコードで予知されています。この行に20の値を微調整:

if (($animatable.offset().top + $animatable.height() - 20) < offset) {

あなたはまた、ニーズに合わせて+-記号を変更する必要があります。

+0

私はマイナスプラスで数字を回っていましたが、それは私のために次のいずれかの結果になります:divがビューポートで100%以上になるとぼやけてしまいます。私はまだJavascriptの使用法を学んでいます。私が望むのは、divがフェードインし始めるビューポートでdivが10ピクセルのときです。このコードの個々の要素が何をしているのか説明できますか? もう1つ:私の場合、このコードはうまくいかず、Chrome(バージョン59.0.3071.109)でエラーが発生します。TypeError:$ animatables.sizeは関数ではありません jQuery 3.2.1を使用しています。 – WPasman

+0

私はjQuery.comで与えられたエラーを修正することができました: ".size()メソッドはjQuery 1.8で廃止予定です。代わりに.lengthプロパティを使用してください。" – WPasman

+1

ペンは2013年に作成され、jQuery 1.10を使用していることに注意してください。jQuery 3.2.1でそれを使用するには、いくつかの調整が必要です。 – Bramus

関連する問題