js 原生判斷內(nèi)容區(qū)域是否滾動(dòng)到底部的實(shí)例代碼
邏輯
判斷內(nèi)容滾動(dòng)到底需要知道的信息
內(nèi)容區(qū)域的真實(shí)高度(也就是滾動(dòng)區(qū)域)
滾動(dòng)條距離頂部的位置
內(nèi)容區(qū)域的可見(jiàn)高度
分別對(duì)應(yīng)下面的三個(gè)API。
element.scrollHeight 獲取元素內(nèi)容高度,,,【只讀屬性】
element.scrollTop 可以獲取或者設(shè)置元素的偏移值,常用于,計(jì)算滾動(dòng)條的位置,當(dāng)一個(gè)元素的容器沒(méi)有產(chǎn)生垂直方向的滾動(dòng)條,那它的 scrollTop 的值默認(rèn)為0.
element.clientHeight 讀取元素的可見(jiàn)高度【只讀屬性】
下面直接引用MDN上面的一個(gè)經(jīng)典的公式
判定元素是否滾動(dòng)到底
如果元素滾動(dòng)到底,下面等式返回true,沒(méi)有則返回false.
element.scrollHeight - element.scrollTop === element.clientHeight
案例-用戶使用協(xié)議
只有等用戶閱讀完協(xié)議才可以點(diǎn)擊同意,也就是說(shuō)滾動(dòng)條到底部之后代表完成閱讀
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>tab</title> <style> textarea{height: 200px;width: 300px} </style> </head> <body> <p> <textarea> 用戶咨詢條款 一、咨詢系統(tǒng)提供的服務(wù) 1、本網(wǎng)站咨詢系統(tǒng)(以下簡(jiǎn)稱“本系統(tǒng)”)為用戶提供參與各種咨詢項(xiàng)目(以下簡(jiǎn)稱“項(xiàng)目”)的機(jī)會(huì)。用戶在包之網(wǎng)上注冊(cè)成為會(huì)員,并可申請(qǐng)某一專家會(huì)員通過(guò)包之網(wǎng)平臺(tái)及電話等方式為其提供咨詢服務(wù)。 2、您應(yīng)按照您想要咨詢的專家其所對(duì)應(yīng)的專家收費(fèi)金額,根據(jù)您希望互動(dòng)/通話時(shí)間的長(zhǎng)短,預(yù)先存入咨詢費(fèi)用,方可進(jìn)行預(yù)約、咨詢。咨詢完成后,剩余的款項(xiàng)將在15個(gè)工作日內(nèi)直接退還給您。您應(yīng)提供詳細(xì)的收款信息,否則本網(wǎng)站不承擔(dān)任何責(zé)任。提請(qǐng)您注意,若預(yù)存金額過(guò)低,可能導(dǎo)致咨詢中斷。咨詢費(fèi)用根據(jù)本網(wǎng)站標(biāo)準(zhǔn)的專家收費(fèi)金額及實(shí)際通話時(shí)間進(jìn)行計(jì)算。您同意因銀行處理本網(wǎng)站對(duì)您的每一筆付款所產(chǎn)生的全部費(fèi)用將由您自行承擔(dān)。 3、如果您對(duì)專家的工作內(nèi)容或提供咨詢服務(wù)質(zhì)量等有異議,則在此等爭(zhēng)議完全解決之前,本網(wǎng)站將扣留應(yīng)付給您的款項(xiàng)。 4、如果您需要發(fā)票,應(yīng)直接向提供咨詢的專家要求,本網(wǎng)站不提供任何發(fā)票。 5、專家收費(fèi)詳見(jiàn)本網(wǎng)站不時(shí)發(fā)布的專家收費(fèi)金額。專家收費(fèi)金額及其修改均為本條款不可分割的組成部分,請(qǐng)您申請(qǐng)前仔細(xì)查看。 6、本網(wǎng)站根據(jù)實(shí)際情況盡可能根據(jù)您的要求、申請(qǐng)與專家進(jìn)行匹配, 但專家有權(quán)不予提供服務(wù)。 </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 () { //讀取內(nèi)容區(qū)域的真實(shí)高度(滾動(dòng)條高) // console.log(this.scrollHeight); //讀取滾動(dòng)條的位置 // console.log(this.scrollTop); //設(shè)置滾動(dòng)到的位置 // this.scrollTop=800; //讀取元素的高度 // console.log(this.clientHeight) //意思就是內(nèi)容總體的高度 - 滾動(dòng)條的偏移值 === 元素的高度(包含內(nèi)邊)但不包含外邊距,邊框,以及滾動(dòng)條 if(this.scrollHeight-this.scrollTop===this.clientHeight){ console.log("到達(dá)底部"); //移除disabled屬性 checkbox.removeAttribute('disabled') } }) </script> </body> </html>
好吧,今天突然 看到mdn上面的這個(gè)API。腦補(bǔ)了一下
Element.scrollTop
以上這篇js 原生判斷內(nèi)容區(qū)域是否滾動(dòng)到底部的實(shí)例代碼就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
微信小程序整個(gè)頁(yè)面的自動(dòng)適應(yīng)布局的實(shí)現(xiàn)
這篇文章主要介紹了微信小程序整個(gè)頁(yè)面的自動(dòng)適應(yīng)布局的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-07-07TypeScript轉(zhuǎn)javaScript的方法示例
本文主要介紹了TypeScript轉(zhuǎn)javaScript的方法示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-06-06詳解webpack打包時(shí)排除其中一個(gè)css、js文件或單獨(dú)打包一個(gè)css、js文件(兩種方法)
本文通過(guò)兩種方法給大家介紹了webpack打包時(shí)排除其中一個(gè)css、js文件,或單獨(dú)打包一個(gè)css、js文件的方法 ,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-10-10深入理解JavaScript系列(8) S.O.L.I.D五大原則之里氏替換原則LSP
本章我們要講解的是S.O.L.I.D五大原則JavaScript語(yǔ)言實(shí)現(xiàn)的第3篇,里氏替換原則LSP(The Liskov Substitution Principle )。2012-01-01微信小程序開(kāi)發(fā)之toast等彈框提示使用教程
彈框提示是我們?cè)陂_(kāi)發(fā)中經(jīng)常用的一個(gè)效果,下面這篇文章主要給大家介紹了微信小程序開(kāi)發(fā)之toast等彈框提示實(shí)現(xiàn)的相關(guān)資料,文中介紹的非常詳細(xì),對(duì)大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起看看吧。2017-06-06JavaScript中利用for循環(huán)遍歷數(shù)組
這篇文章主要為大家詳細(xì)介紹了JavaScript中利用for循環(huán)遍歷數(shù)組,最好不要使用for in遍歷,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-01-01