2016-05-12 4 views
0

HTMLスクロール使用してjavascriptの方法

<section id="imag" class = "paral-1 image-contain">   
</section> 

はJavaScript

var g = 0; 
    //var myImage = document.getElementById("imag"); 
    window.addEventListener('scroll', pageScrolled); 

    function pageScrolled() { 
     g = g + 10; 
     document.getElementById("imag").style.top = -g+"px" ; 
    } 
  1. まず、関数は、スクロールが、ページのロードが、それが呼び出されたときに呼び出されなければなりません。
  2. 第2に、関数をスクロールすると、変数 "g"が10で更新されるはずですが、100のように増加します。この変わったbeahviourは何ですか?コンソールを開いてチェックすることができます。 ここでフィドルだ - https://jsfiddle.net/LuLt0mh0/

答えて

1
  1. 文書が負荷にスクロール(理由はアンカーの例、またはページがすでにスクロールされた場合は、リロードに)

  2. のためである場合にのみ発生しますそれぞれscrollイベントgが発生し、10が増加します。しかし、それはスクロールしている間に何回も起動される継続イベントです。 pageScrolledconsole.log(g)を追加

    は、それが10複数倍に増加している ことが示されます: jsfiddle.net/LuLt0mh0/1

    詳細はMDN scroll参照してください:

    [...]スクロールイベントができるためにイベントハンドラ は、DOM のような計算上高価な操作を実行すべきではありません[...]

+0

私は、スクロール上の任意の関数を適用する必要がある場合、それは災害かもしれないので、我々はこのスクロール動作を制御することができます。.. Iamはあなたが値を段階的に増加することはありません@ShahRukhK視差スクロール –

+0

を追加しようあなたの値をスクロールオフセットに結びつけるためには、MDNページに表示された 'Scroll optimization with window.requestAnimationFrame'のようなものを使用してください。または、あるスクロールオフセットに達すると滑らかなアニメーションを開始したいエフェクトに依存します。しかし、あなたが達成したい効果について言及していないので、それを伝えることは不可能です。 –

0

あなたは次の行で2つの問題を抱えて:

document.getElementById("imag").style.top = -g + "px"; 
  1. スクロールイベントが起こるたびに、その行が実行される - 結果はx10pxによって#imagtop減少います。もちろん何も起こらない理由は...

  2. #imagには、positionというプロパティが割り当てられていません。プロパティtopが機能するようにするには、要素にposition: relative, absolute, or fixed.がある場合です。ただし、これを修正しても、そのコード行は、あなたのビューポートから#imagを離して表示することはなく、ページを更新するまでは北に進みます。

関連する問題