搜尋
首頁運維安全捲動scroll如何理解

滾動寬高

scrollHeight

  scrollHeight表示元素的總高度,包括由於溢出而無法展示在網頁的不可見部分

scrollWidth

  scrollWidth表示元素的總寬度,包括由於溢出而無法展示在網頁的不可見部分

  [注意]IE7-瀏覽器返回值是不準確的

  【1】沒有捲軸時,scrollHeight與clientHeight屬性結果相等,scrollWidth與clientWidth屬性結果相等

<div></div><script>//120 120console.log(test.scrollHeight,test.scrollWidth);//120 120console.log(test.clientHeight,test.clientWidth);</script>

  【2】存在滾動條時,但元素設定寬高大於等於元素內容寬高時,scroll和client屬性的結果相等

<div>
    内容<br>内容<br>
</div><script>//103(120-17) 103(120-17)console.log(test.scrollHeight,test.scrollWidth);//103(120-17) 103(120-17)console.log(test.clientHeight,test.clientWidth);</script>

  【3】存在捲軸,但元素設定寬高小於元素內容寬高,即存在內容溢出的情況時,scroll屬性大於client屬性

  [注意]scrollHeight屬性有相容性問題,chrome和safari瀏覽器中,scrollHeight包含padding-bottom;而IE和firefox不包含padding-bottom

<div>
    内容</div><script>//chrome/safari:220(200+10+10)//firefox/IE:210(200+10)console.log(test.scrollHeight);//103(120-17)console.log(test.clientHeight);</script>

頁面尺寸

  document.documentElement.clientHeight表示頁面的可視區域的尺寸,而document.documentElement.scrollHeight表示html元素內容的實際尺寸。但由於各個瀏覽器表現不一樣,分為以下幾種情況

  【1】html元素沒有捲軸時,IE和firefox的client和scroll屬性始終相同,且傳回可視區的尺寸大小;而safari和chrome表現正常,clientHeight返回可視區域大小,而scrollHeight返回元素內容大小

//firefox:  755 755//chrome:   947 8(body元素的margin)//safari:   744 8(body元素的margin)//IE:       768 768console.log(document.documentElement.clientHeight,document.documentElement.scrollHeight)

  【2】html元素存在捲軸時,各個瀏覽器都表現正常。 clientHeight提供了視口區域的尺寸,而scrollHeight提供了元素內容的尺寸

<script>//firefox:  755 1016(1000+8*2)//chrome:   947 1016(1000+8*2)//safari:   744 1016(1000+8*2)//IE:       768 1016(1000+8*2)console.log(document.documentElement.clientHeight,document.documentElement.scrollHeight)</script>

相容

##  因此要取得文件實際高度時,要取得元素的scrollHeight和clientHeight的最大值

var docHeight = Math.max(document.documentElement.scrollHeight,document.documentElement.clientHeight);var docWidth  = Math.max(document.documentElement.scrollWidth,document.documentElement.clientWidth);
滾動長度

scrollTop

  scrollTop屬性表示被隱藏在內容區域上方的像素數。元素未捲動時,scrollTop的值為0,若元素被垂直捲動了,scrollTop的值大於0,且表示元素上方不可見內容的像素寬度

scrollLeft

#scrollLeft屬性指示內容區域左側隱藏的像素數。元素未滾動時,scrollLeft的值為0,如果元素被水平滾動了,scrollLeft的值大於0,且表示元素左側不可見內容的像素寬度

  當滾動條滾動到內容底部時,符合以下等式

scrollHeight == scrollTop  + clientHeight
<div>
    内容</div><button>点击</button><div></div><script>btn1.onclick = function(){
    result.innerHTML = &#39;scrollTop:&#39; + test.scrollTop+&#39;;clientHeight:&#39; + test.clientHeight + &#39;;scrollHeight:&#39; + test.scrollHeight
}</script>
  與scrollHeight和scrollWidth屬性不同的是,scrollLeft和scrollTop是可寫的

  [注意]為scrollLeft和scrollTop賦值為負值時,並不會報錯,而是靜默失敗

<div>
    内容</div><button>向下滚动</button><button>向上滚动</button><script>btn1.onclick = function(){test.scrollTop += 10;}
btn2.onclick = function(){test.scrollTop -= 10;}</script>
頁面滾動

  理論上,透過document.documentElement.scrollTop和scrollLeft可以反映和控制頁面的滾動;但是chrome和safari瀏覽器是透過document.body .scrollTop和scrollLeft來控制的

<button>点击</button><div></div><script>btn1.onclick = function(){
    result.innerHTML = &#39;html的scrollTop:&#39; + document.documentElement.scrollTop +&#39;;body的scrollTop:&#39; + document.body.scrollTop;
}</script>    
  所以,頁面的滾動高度相容寫法是

var docScrollTop = document.documentElement.scrollTop || document.body.scrollTop

回到頂部

#  可以利用scrollTop來實現回到頂部的功能

function scrollTop(){    if((document.body.scrollTop || document.documentElement.scrollTop) != 0){
        document.body.scrollTop = document.documentElement.scrollTop = 0;
    }
}
<button>回到顶部</button>
<script>function scrollTop(){    if((document.body.scrollTop || document.documentElement.scrollTop) != 0){
        document.body.scrollTop = document.documentElement.scrollTop = 0;
    }
}
btn.onclick = scrollTop;</script>
  還有兩個window的唯讀屬性可以取得整個頁面滾動的像素值,它們是pageXOffset和pageYOffset

#pageXOffset

  pageXOffset表示水平方向上頁面滾動的像素值

#pageYOffset

  pageYOffset表示垂直方向上頁面滾動的像素值

  [注意]IE8-瀏覽器不支援

<button>点击</button><div></div><script>btn1.onclick = function(){
    result.innerHTML = &#39;pageYOffset:&#39; + window.pageYOffset;
}</script>    
滾動方法

scrollTo(x,y)

  scrollTo(x,y)方法捲動目前window中顯示的文檔,讓文檔中由座標x和y指定的點位於顯示區域的左上角

<button>滚动</button><script>btn.onclick = function(){scrollTo(0,0);}</script>

scrollBy(x,y)##  scrollBy( x,y)方法捲動目前window中顯示的文檔,x和y指定捲動的相對量

<button>向下滚动</button><button>向上滚动</button><script>btn1.onclick = function(){scrollBy(0,100);}
btn2.onclick = function(){scrollBy(0,-100);}</script>

【小應用程式】

  利用scrollBy()加setInterval計時器實現簡單的快速捲動功能

<button>开始滚动</button><button>停止滚动</button><script>var timer = 0;
btn1.onclick = function(){
    timer = setInterval(function(){
        scrollBy(0,10);
    },100)}
btn2.onclick = function(){
    clearInterval(timer);
    timer = 0;
}</script>

scrollIntoView()

  Element.scrollIntoView方法捲動目前元素,進入瀏覽器的可見區域

  此方法可以接受一個布林值作為參數。如果為true,表示元素的頂部與當前區域的可見部分的頂部對齊(前提是當前區域可滾動);如果為false,則表示元素的底部與當前區域的可見部分的尾部對齊(前提是當前區域可滾動)。如果沒有提供該參數,預設為true

<div></div><button>滚动到页面开头</button><button>滚动到页面结尾</button><script>btn1.onclick = function(){
    test.scrollIntoView();
};
btn2.onclick = function(){
    test.scrollIntoView(false);
}</script>

scrollIntoViewIfNeeded()

  scrollIntoViewIfNeeded(true)方法只在目前元素在視窗中不可見的情況下,才捲動瀏覽器視窗或容器元素,最終讓它可見。如果目前元素在視窗中可見,這個方法什麼也不做 

當alignCenter參數設定為true時,元素會盡可能顯示在視窗的垂直中心位置上

  [注意]此方法只有chrome和safari支援

<div></div><button>滚动到页面中间</button><script>btn.onclick = function(){
    test.scrollIntoViewIfNeeded(true)
};</script>

scrollByLines(lineCount)

  scrollByLines(lineCount)方法将元素的内容滚动指定的行髙,lineCount值可以是正值, 也可以是负值

  [注意]该方法只有safari支持

<div>
    内容</div><button>向下滚动</button><button>向上滚动</button><script>btn1.onclick = function(){test.scrollByLines(1);}
btn2.onclick = function(){test.scrollByLines(-1);}</script>

scrollByPages(pageCount)

  scrollByPages(pageCount)方法将元素的内容滚动指定的页面高度,具体高度由元素的高度决定

  [注意]该方法只有safari支持

<div>
    内容</div><button>向下滚动</button><button>向上滚动</button><script>btn1.onclick = function(){test.scrollByPages(1);}
btn2.onclick = function(){test.scrollByPages(-1);}</script>

滚动事件

在页面中相应元素发生变化时,scroll事件会在window对象上触发。当然,scroll事件也可以用在有滚动条的元素上

<div></div><script>window.onscroll = function(){
    result.innerHTML = &#39;页面的scrollTop:&#39; + (document.documentElement.scrollTop||document.body.scrollTop);
}</script>    

以上是捲動scroll如何理解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文轉載於:亿速云。如有侵權,請聯絡admin@php.cn刪除

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
4 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
4 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
4 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.聊天命令以及如何使用它們
4 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

mPDF

mPDF

mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

Atom編輯器mac版下載

Atom編輯器mac版下載

最受歡迎的的開源編輯器

EditPlus 中文破解版

EditPlus 中文破解版

體積小,語法高亮,不支援程式碼提示功能

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )專業的PHP整合開發工具

WebStorm Mac版

WebStorm Mac版

好用的JavaScript開發工具