2017-01-03 7 views
0

ページを下にスクロールすると画像が上にスクロールします。私はそれをかなり簡単に行うことができましたが、私が抱えている問題はjQueryで画像のCSS、特にtransformプロパティを変更していることです。しかし、私はtransformプロパティを既に使用していますので、画像を中央揃えにします。スクロールでdivの位置を変更する

コード:

.planeImg { 
    position: absolute; 
    display: block; 
    left: 50%; 
    top: 50%; 
    transform: translate(-50%, -50%); 
    background: url("../images/plane.png"); 
    background-size: contain; 
    background-repeat: no-repeat; 
    z-index: 99; 
    height: 80px; 
    width: 300px; 
} 

$(window).on("scroll", function() { 
    var wScroll = $(this).scrollTop(); 
    $('.planeImg').css({'transform' : 'translate(0px, -'+ wScroll /2 +'%)'}) 
}); 

だから私は画像を中央揃えするtransformプロパティを使用していますので、jQueryのは、私のイメージの位置をbuggeringています。

+1

あなたはJavaScriptで0px' 'に変換水平を設定しています。水平センタリングを維持するには '-50% 'と置き換えることができます。垂直センタリングも問題ですか? –

+0

トランスフォームプロパティではなく、イメージの配置には、上/左/下/右(またはマージンなど)を使用する必要があります。 – vicgoyso

+0

ありがとうございました@JonUleis – RhysE96

答えて

1

wScrollの計算を変更して、画像のスクロールがページのスクロールに追従するようにしました。これが役に立ったら教えてください。

Fiddle

javascriptの

$(window).on("scroll", function() { 
    var wScroll = ($(this).scrollTop()/$(window).height()) + 50; 
    $('.planeImg').css({ 
    'transform': 'translate(-50%, -' + (wScroll) + '%)' 
    }) 
}); 

CSS

.planeImg { 
    position: absolute; 
    display: block; 
    left: 50%; 
    top: 50%; 
    transform: translate(-50%, -50%); 
    background: url("https://www.google.be/images/branding/googlelogo/2x/googlelogo_color_272x92dp.png"); 
    background-size: contain; 
    background-repeat: no-repeat; 
    z-index: 99; 
    height: 80px; 
    width: 300px; 
} 
+0

それはまた、垂直方向ではなく画像を水平方向に移動する方法はありますか? – RhysE96

+0

@ RhysE96このように? https://jsfiddle.net/gktt7mrg/ – user286089

関連する問題