2017-05-02 3 views
0

ユーザーがWebページを下にスクロールしたときに画像を180度回転させようとしています。回転はビューポートで画像が表示されている間に行われ、ユーザーがスクロールして元の位置に戻す必要があります。スクロール時に要素を180度回転する

私はそれを大部分は機能させましたが、回転が一見無作為に180度以下の値で停止することがあります。私はその理由を把握して確認してください画像は常にあなたが本当にスクロールに基づくパーセントと最もあなたがスクロールすることができますを行う必要があります180

var iconRotate = $('.icon-rotate img'); 
 
if (iconRotate.length != 0) { 
 
\t $(window).scroll(function() { 
 
\t \t var page = window.pageYOffset, 
 
\t \t inner = window.innerHeight, 
 
\t \t result = (180 * page/(inner/3)); 
 

 
\t \t if (result < 180) { 
 
     console.log(result); 
 
\t \t \t iconRotate.css({transform: 'rotate(-' + result + 'deg)'}); 
 
\t \t } 
 
\t }); 
 
}
.icon-rotate { 
 
    width:300px; 
 
} 
 

 
img { 
 
    width: 100%; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="icon-rotate"> 
 
    <img src="http://68.media.tumblr.com/6324fd64b78c316379713480b8e44d29/tumblr_nd1rffWqEa1ryzl2ko1_1280.jpg" /> 
 
</div>

答えて

0

に回転させるようにしたいことはできません。

var iconRotate = $('.icon-rotate img'); 
 
if (iconRotate.length != 0) { 
 
\t $(window).scroll(function() { 
 
\t \t var scroll = $(window).scrollTop(), 
 
\t \t maxScroll = $(document).height()-$(window).height(); 
 
\t \t iconRotate.css({transform: 'rotate(-' + (180 * scroll/maxScroll) + 'deg)'}); 
 
\t }); 
 
}
.icon-rotate { 
 
    width:300px; 
 
} 
 

 
img { 
 
    width: 100%; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="icon-rotate"> 
 
    <img src="http://68.media.tumblr.com/6324fd64b78c316379713480b8e44d29/tumblr_nd1rffWqEa1ryzl2ko1_1280.jpg" /> 
 
</div>

+0

感謝。これは、ページの下部に達すると180度回転を停止するという点で機能します。しかし、回転させたい画像は非常に長いページにあります。ユーザーは決して完全な回転を見ることはありません。画像はユーザに見える間に頭の上で点灯するはずです。 私はこの行を使用して、私の例では回転速度を上げることができた: '結果=(180 *ページ/(インナー/ 3));画像は下部の前に完全に回転させて' このようページに達しました。しかし、私はこれが完全に回転していないことがあり、176度のような値で止まってしまうことがあると思います。 – publicb

関連する問題