ホームページ  >  記事  >  ウェブフロントエンド  >  コンテンツエリアが一番下までスクロールされたかどうかを判定するjsの詳細説明

コンテンツエリアが一番下までスクロールされたかどうかを判定するjsの詳細説明

小云云
小云云オリジナル
2017-12-21 09:35:092854ブラウズ

コンテンツが最後までスクロールされているかどうかを判断するには、コンテンツ領域 (つまり、スクロール領域) の実際の高さ、上からのスクロール バーの位置、およびコンテンツ領域の表示高さを知る必要があります。この記事では主に、コンテンツ領域が一番下までスクロールしたかどうかを判断するための js ネイティブのサンプル コードを紹介します。非常に参考になるので、皆さんのお役に立てれば幸いです。

はそれぞれ以下の3つのAPIに対応しています。

element.scrollHeight は、要素のコンテンツの高さを取得します。、、[読み取り専用属性]

element.scrollTop は、要素のオフセット値を取得または設定できます。これは、コンテナがスクロール バーの位置を計算するためによく使用されます。要素のスクロールバーが垂直方向のスクロールバーを生成しない場合、そのscrollTop値はデフォルトで0になります。

element.clientHeightは要素の表示可能な高さを読み取ります[読み取り専用属性]

以下はMDNの古典的な数式を直接引用しています

要素が最後までスクロールされるかどうかを決定します

要素が最後までスクロールされる場合、次の等式は true を返し、それ以外の場合は false を返します。


element.scrollHeight - element.scrollTop === element.clientHeight

ケース - ユーザー同意書

ユーザーが同意書、つまりスクロールバーを読んだ後にのみクリックして同意してください。一番下に到達したら、読み終わったことを意味します


<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>tab</title>
  <style>
    textarea{height: 200px;width: 300px}
  </style>
</head>
<body>

<p>
  <textarea>
    用户咨询条款
    一、咨询系统提供的服务

1、本网站咨询系统(以下简称“本系统”)为用户提供参与各种咨询项目(以下简称“项目”)的机会。用户在包之网上注册成为会员,并可申请某一专家会员通过包之网平台及电话等方式为其提供咨询服务。

2、您应按照您想要咨询的专家其所对应的专家收费金额,根据您希望互动/通话时间的长短,预先存入咨询费用,方可进行预约、咨询。咨询完成后,剩余的款项将在15个工作日内直接退还给您。您应提供详细的收款信息,否则本网站不承担任何责任。提请您注意,若预存金额过低,可能导致咨询中断。咨询费用根据本网站标准的专家收费金额及实际通话时间进行计算。您同意因银行处理本网站对您的每一笔付款所产生的全部费用将由您自行承担。

3、如果您对专家的工作内容或提供咨询服务质量等有异议,则在此等争议完全解决之前,本网站将扣留应付给您的款项。

4、如果您需要发票,应直接向提供咨询的专家要求,本网站不提供任何发票。

5、专家收费详见本网站不时发布的专家收费金额。专家收费金额及其修改均为本条款不可分割的组成部分,请您申请前仔细查看。

6、本网站根据实际情况尽可能根据您的要求、申请与专家进行匹配, 但专家有权不予提供服务。

  </textarea>
</p>
<p>
  <input type="checkbox" value="1" disabled="disabled"> 同意
</p>
<script>
  //获取checkbox元素
  var checkbox=document.querySelector(&#39;input[type=checkbox]&#39;);

  document.querySelector(&#39;textarea&#39;).addEventListener(&#39;scroll&#39;,function () {

    //读取内容区域的真实高度(滚动条高)
//    console.log(this.scrollHeight);

    //读取滚动条的位置
//    console.log(this.scrollTop);

    //设置滚动到的位置
//      this.scrollTop=800;

    //读取元素的高度
//    console.log(this.clientHeight)

    //意思就是内容总体的高度 - 滚动条的偏移值 === 元素的高度(包含内边)但不包含外边距,边框,以及滚动条
    if(this.scrollHeight-this.scrollTop===this.clientHeight){
      console.log("到达底部");
      //移除disabled属性
      checkbox.removeAttribute(&#39;disabled&#39;)
    }

  })


</script>
</body>
</html>

さて、今日、突然 mdn でこの API を目にしました。しばらく考えてみました
Element.scrollTop

みんなは覚えましたか?急いで試してみてください。

関連する推奨事項:

上下にスクロールする div 内部スクロールバーの実装

jquery ページを一番下にスクロールし、プラグイン collection_jquery を自動的にロードする

DIV スクロールを実装する Javascript コード自動的に一番下までスクロールします _JavaScript スキル

以上がコンテンツエリアが一番下までスクロールされたかどうかを判定するjsの詳細説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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