邏輯
判斷內容滾動到底需要知道的信息
內容區域的真實高度(也就是滾動區域)
滾動條距離頂部的位置
內容區域的可見高度
分別對應下面的三個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('input[type=checkbox]'); document.querySelector('textarea').addEventListener('scroll',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('disabled') } })</script></body></html>好吧,今天突然 看到mdn上面的這個API。腦補了一下
Element.scrollTop
以上這篇js 原生判斷內容區域是否滾動到底部的實例代碼就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持武林網。
新聞熱點
疑難解答