2016-07-05 13 views
0

ページをスクロールするときにサイズを変更するスティッキーヘッダーを作成しようとしています。 実装したい主な機能の1つは、ヘッダー内のイメージが縮小して左に移動することです。変更をブロックするためにインラインディスプレイを表示する

これまでのところ、私はすべてがアニメーション化されてうまく機能しています。 私は左に動いていますが、動かないのです。

私は1つの点で

$('#page_header_logo_img').css({ 
    "padding-left":"20%", 
    "display":"inline" 
}) 

を呼び出していますし、後に場所を正確に私が欲しい、それを動かすために美しく働く

$('#page_header_logo_img').css({ 
    "padding-left":"0", 
    "display":"block" 
}) 

を呼び出して...唯一の問題は、それがジャンプしているjQueryので

私はjQuery Animate効果を取り入れようとしましたが、動作させることができませんでした。

Here is a JSFiddle of what I currently have 私が必要とするのは、左右の動きが滑らかで瞬時でないことです。 ANSWER

FOR

EDITは、私は私の最も近くなった答えを受け入れ、そしてまた、私は尋ねた質問に答えました。 しかし、それは私が欲しかったものを私に与えてくれなかったので、ここで最終的な解決策を投稿すると思いました。

画像をposition: absolute;に変更し、余白と左のプロパティを動的に設定しました。

You can see a working JSFiddle here

+0

'display'は遷移可能プロパティではありません。ごめんなさい。できない。 –

+0

ここにCSSのアニメーションプロパティのリストがあります:https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_animated_properties –

答えて

1

あなたがアニメーション効果をしたい場合は、代わりに.css().animate()を使用することができますが、display.animate()では動作しませんので、あなたはそれでdisplayを使用することができます。

残りは関数は、この

var scrolPos = $(window).scrollTop(); 
if(scrolPos>100){ 
    $('#page_header_logo_img').animate({ 
    paddingLeft:"20%" 
    }); 
} else { 
    $('#page_header_logo_img').animate({ 
    paddingLeft:"0" 
    }); 
}; 
+0

これは私をもっとも近いものにしてくれると思われますが、パディングをマージンに変更しましたが、現在は自動的にスイッチバックされません。https://jsfiddle.net/ka5jj0ay/6/ –

+0

完璧な解決策ではありません...オートが動作していないという奇妙な動作の種類が残ります –

+0

jQueryは数値を必要とするので、新しい計算 –

3

あなたはCSSトランジションの使用を検討することができます。

transition: padding-left 0.3s ease-in-out;#page_header_logo_imgのスタイルに追加すると、左に移動するとアニメーション化されます。

JSFiddleのhereを参照してください。これはあまり洗練されていませんが、どのようにCSSトランジションを使用できるかを確認できます。

CSSトランジションの詳細については、thisを参照してください。

-1

のようにあなただけのCSSプロパティを変更していることになるので、ジャンプがあります。

円滑な移行のために、jQuery .animate()メソッドを使用してください。コードを以下のように変更します。

$('#page_header_logo_img').animate({ 
    "padding-left": "20%", 
    "display": "inline" 
}) 

$('#page_header_logo_img').animate({ 
    "padding-left": "0", 
    "display": "block" 
}) 
関連する問題