ホームページ  >  記事  >  ウェブフロントエンド  >  jQuery は、スクロール バーがページの一番下までスクロールしたかどうかを判断します。

jQuery は、スクロール バーがページの一番下までスクロールしたかどうかを判断します。

巴扎黑
巴扎黑オリジナル
2017-06-29 09:41:331407ブラウズ

実際、現在位置を決定するには clientHeight、offsetHeight、scrollTop の 3 つのパラメータを使用するだけで済みます。 例を紹介します。

例、一番下まで判定

コードは以下の通りです

$(window).scroll(function () {
    if ($(document).scrollTop() + $(window).height() >= $(document).height()) {
        alert("哦哦,到底了.");
    }
});

一番下まで引っ張りたい場合はコンテンツを自動的に読み込みます。スクロール バー イベントを登録するだけです:

まず、スクロール バーを上から下に引っ張ります。変更されるのは、scrollTop の値であり、この値には範囲があります。
この間隔は: [0, (offsetHeight - clientHeight)]
つまり、スクロール バーを引くプロセス全体の変化は 0 から (offsetHeight - clientHeight) の範囲内になります。

1. スクロール バーが下までスクロールしたかどうかを確認します:scrollTop == (offsetHeight – clientHeight)
2. スクロール バーが下から 50 ピクセル以内にある場合: (offsetHeight – clientHeight) –scrollTop 3 . スクロールバー上 下端から5%以内:scrollTop / (offsetHeight – clientHeight) >= 0.95

コードは以下の通りです

scrollBottomTest =function(){
     $("#contain").scroll(function(){
         var $this =$(this),
         viewH =$(this).height(),//可见高度
         contentH =$(this).get(0).scrollHeight,//内容高度
         scrollTop =$(this).scrollTop();//滚动高度
        //if(contentH - viewH - scrollTop <= 100) { //到达底部100px时,加载新内容
        if(scrollTop/(contentH -viewH)>=0.95){ //到达底部100px时,加载新内容
        // 这里加载数据..
        }
     });
}

JS判定

縦スクロールバーが下端に到達したかどうかを判定します
上記の概念、コーディングは実際には比較的単純です。以下はサンプル コードです:

コードは次のとおりです

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
      <meta http-equiv="content-type" content="text/html;charset=utf-8">
      <title>下拉滚动条滚到底部了吗?</title>
      <script language="javascript" src="jquery-1.4.2.min.js"></script>
      <script language="javascript">
      $(document).ready(function (){
        var nScrollHight = 0; //滚动距离总长(注意不是滚动条的长度)
        var nScrollTop = 0;   //滚动到的当前位置
        var nDivHight = $("#div1").height();
        $("#div1").scroll(function(){
          nScrollHight = $(this)[0].scrollHeight;
          nScrollTop = $(this)[0].scrollTop;
          if(nScrollTop + nDivHight >= nScrollHight)
            alert("滚动条到底部了");
          });
      });
      </script>
    <body>
    <div id="div1" style="overflow-y:auto; overflow-x:hidden; height:500px;">
      <div style="background-color:#ccc; height:750px;">IE 和 FF 下测试通过</div>
    </div>
    </body>
    </html>

コードの説明:

内側の div の高さは 750、外側の div の高さは500 なので、垂直スクロール バーは一番下に到達するまでに 750-500=250 の距離をスクロールする必要があります。ステートメント nScrollTop + nDivHight >= nScrollHight を参照してください。
プログラムでは、外部divのスクロールイベント内のif判定文を検出して実行することで、CPUリソースを多く消費します。マウスを使用してスクロール バーをドラッグすると、1 ピクセルの変化がある限りこのイベントがトリガーされます。ただし、スクロール バーの両端にある矢印をクリックすると、イベントがトリガーされる頻度は大幅に低くなります。したがって、スクロール バーのスクロール イベントは注意して使用する必要があります。
この例では、水平スクロールバーがない場合の状況を判断していますが、水平スクロールバーがある場合は状況が少し変わりますので、nScrollTop + nDivHight >= nScrollHight ステートメントでは ">="" を使用する必要があります。比較演算子、水平スクロールバーがない場合は等号「=」で十分です。実際にテストすることができます。水平スクロール バーが最後までスクロールしたかどうかを確認することもできます。

以上がjQuery は、スクロール バーがページの一番下までスクロールしたかどうかを判断します。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。