最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JavaScript中DOM上的尺寸及位置屬性

 更新時間:2025年08月07日 10:43:18   作者:超級英雄不打小怪獸  
DOM是JavaScript中的一個重要概念,它是一種編程接口,使得開發(fā)人員可以使用HTML和XML文檔,這篇文章主要介紹了JavaScript中DOM上尺寸及位置屬性的相關資料,需要的朋友可以參考下

前言

相信當家對DOM元素上的尺寸及位置屬性一定不陌生,常見的clientHeight、offsetHeight等屬性在日常開發(fā)中會經常用到,但也會常常忘記各個屬性具體的邊界情況。本文整理了DOM元素上的尺寸及位置屬性,方便大家日后在使用過程中能快速回想起各個屬性的邊界。

DOM元素上的尺寸及位置

DOM元素上的尺寸及位置屬性我分為以下三類方便記憶,分別是clinet類、offset類、scroll類。

1、clientHeight、clientWidth、clientTop、clientLeft;

2、offsetHeight、offsetWidth、offsetTop、offsetLeft;

3、scrollHeight、scrollWidth、scrollTop、scrollLeft;

client(可視區(qū))類型

clientHeight:指向元素可視部分的padding-top+padding-bottom+height部分。

clientWidth:指向元素可視部分的padding-left+padding-right+width部分。

clientTop:指向元素的border-top的寬度。

clientLeft:指向元素的border-left的寬度。

注意,這里的可視部分指的是該元素未被折疊起來的部分,而不是指我們所看到的部分,這里從字面上看很容易造成誤導。讓我們來看一個實例代碼。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>尺寸及位置</title>
    <style>
        #container{
            background-color: red;
            height: 400px;
            width: 400px;
            padding: 20px;
            border-top: 10px solid;
            border-bottom: 12px solid;
            border-left: 13px solid;
            border-right: 14px solid;
            overflow: auto;
        }
    </style>
</head>
<body>
    <div id="container">
    </div>
    <script>
        const container = document.getElementById('container')
        console.log('clientHeight:',container.clientHeight) //clientHeight: 440
        console.log('clientWidth:',container.clientWidth) //clientWidth: 440
        console.log('clientTop:',container.clientTop)//clientTop: 10
        console.log('clientLeft:',container.clientLeft)//clientLeft: 13
    </script>
</body>
</html>

根據代碼我們可以很清楚的得到該元素的位置和尺寸值,現在我們將元素的高度改為2000px,使整個瀏覽器出現縱向滾動條。

這個時候我們獲取該元素clientHeight應該等于 2000+20+20=2400 ,而不是照片中字面意思上的可視區(qū)域高度。我們再看一個案例,當這個元素出現滾動條時,他的clinetHeight又是多少?

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>尺寸及位置</title>
    <style>
        #container{
            background-color: red;
            height: 400px;
            width: 400px;
            padding: 20px;
            border-top: 10px solid;
            border-bottom: 12px solid;
            border-left: 13px solid;
            border-right: 14px solid;
            overflow: auto;

        }
    </style>
</head>
<body>
    <div id="container">
        <div style="height: 1000px;"></div>
    </div>
    <script>
        const container = document.getElementById('container')
        console.log('clientHeight:',container.clientHeight) //clientHeight: 440
        console.log('clientWidth:',container.clientWidth) //clientWidth: 430  由于滾動條存在寬度
        console.log('clientTop:',container.clientTop)//clientTop: 10
        console.log('clientLeft:',container.clientLeft)//clientLeft: 13
    </script>
</body>
</html>

當該元素出現滾動條時,元素的clientHeight= 400+20+20 = 440,這是沒有問題的,看到這里你一定清楚了“可視區(qū)域的”含義,我們接著往下看。

offset類型

offsetHeight:指向元素可視部分的padding-top+padding-bottom+height+border-top+border-bottom部分。

offsetWidth:指向元素可視部分的padding-left+padding-right+width+border-left+border-right部分。

clientTop:指當前元素距離最近的已經定位過的祖先元素的上邊距。

clientLeft:指當前元素距離最近的已經定位過的祖先元素的左邊距。

這里offsetHight/Width和clientHeight/Width是差不多的,區(qū)別在于offsetHeight/Width部分多添加了border部分, 我們著重看一下offsetTop和offsetLeft。代碼如下。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>尺寸及位置</title>
    <style>
        *{
            padding: 0;
            margin: 0;
        }
        #container{
            width: 300px;
            height: 300px;
            background-color: antiquewhite;
            margin: 30px 60px;
            position: relative;
            padding: 30px;
            border: 10px solid;
        }
        #item{
            background-color: red;
            height: 40px;
            width: 40px;
            padding: 20px;
            border: 10px solid;
            overflow: auto;

        }
    </style>
</head>
<body>
    <div id="container">
        <div id="item"></div>
    </div>
    <script>
        const container = document.getElementById('item')
        console.log('offsetHeight:',container.offsetHeight) //offsetHeight: 100
        console.log('offsetWidth:',container.offsetWidth) //offsetWidth: 100
        console.log('offsetTop:',container.offsetTop)//offsetTop: 30
        console.log('offsetLeft:',container.offsetLeft)//offsetLeft: 30
    </script>
</body>
</html>

從代碼及結果圖里相信你就已經理解了offsetTop和Left的邊界,這里一定要注意是相對于最近的定位過的祖先元素,只要定位過就可以,無論是絕對定位或者相對定位或者固定定位,只要定位(不包含initial) 即可。

scroll類型

scrollHeight:指向元素內容的實際高度,包含該元素滾動卷起來的部分高度。

scrollWidth:向元素內容的實際寬度,包含該元素滾動卷起來的部分寬度。

scrollTop:指向元素卷起來的高度。

clientLeft:指向元素卷起來的寬度。

scroll類型的尺寸及位置通常用在該元素存在滾動條情況,當元素不存在滾動的情況下,scrollHeight/Width等同于 clientHeight/Width,讓我們看一下示例。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>尺寸及位置</title>
    <style>
        *{
            padding: 0;
            margin: 0;
        }
        #container{
            width: 300px;
            height: 300px;
            background-color: antiquewhite;
            position: initial;
            padding: 30px;
            border: 10px solid;
            overflow: auto;
        }

    </style>
</head>
<body>
    <div id="container">
        <div style="height: 1000px;"></div>
    </div>
    <script>
        const container = document.getElementById('container')
        console.log('scrollHeight:',container.scrollHeight) //scrollHeight: 1060
        console.log('scrollWidth:',container.scrollWidth) //scrollWidth: 343
        console.log('scrollTop:',container.scrollTop)//scrollTop: 0
        console.log('scrollLeft:',container.scrollLeft)//scrollLeft: 0
    </script>
</body>
</html>

從代碼這可以看出,元素的高度300px,但是內部的元素將整個父元素撐大,這個時候元素的高度變?yōu)?1000+30+30,也就是內部元素所占據的content大小加上上下padding,本質與clientHeight的算法是相同的,只是內容區(qū)域的高度不同。

此時我將滾動條滑動到底部,這個時候再看scrollTop的值。

我們能看到隨著滾動條的滾動,scrollTop的值也在發(fā)生改變,指向卷起部分的高度,我們將卷起部分的高度加上可視部分的高度結果算出來的值等于scrollHeight,既 700+300+30+30 = 1060,因此在實際開發(fā)中,如果我們想要在滾動條滑到底部進行額外操作的化,我們可以通過該公式判斷滾動條是否滑倒了元素底部。

總結

到此這篇關于JavaScript中DOM上的尺寸及位置屬性的文章就介紹到這了,更多相關JS DOM的尺寸及位置內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 一文帶你了解一下JavaScript中什么是嚴格模式

    一文帶你了解一下JavaScript中什么是嚴格模式

    嚴格模式是?ECMAScript?5?引入的一種運行模式,可以讓?JavaScript?在更加嚴格的條件下運行,本文主要為大家詳細介紹了JavaScript中嚴格模式的使用,需要的可以參考下
    2023-11-11
  • JS異步的執(zhí)行原理和回調詳解

    JS異步的執(zhí)行原理和回調詳解

    這篇文章主要給大家介紹了關于JS異步的執(zhí)行原理和回調的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-03-03
  • 微信小程序與后臺PHP交互的方法實例分析

    微信小程序與后臺PHP交互的方法實例分析

    這篇文章主要介紹了微信小程序與后臺PHP交互的方法,結合實例形式分析了微信小程序基于wx.request(OBJECT)方法與后臺php程序交互相關操作技巧與注意事項,需要的朋友可以參考下
    2018-12-12
  • 詳解JS事件循環(huán)及宏任務微任務的原理

    詳解JS事件循環(huán)及宏任務微任務的原理

    在js中,我們一般將所有的任務都分成兩類,一種是同步任務,另外一種是異步任務。而在異步任務中,又有著更加細致的分類,那就是微任務和宏任務。本文將詳細講解這二者的原理與使用,需要的可以參考一下
    2022-05-05
  • 頁面回到頂部的三種實現(錨標記,js)

    頁面回到頂部的三種實現(錨標記,js)

    本文不再介紹,大家根據自己需要選擇其中的一種即可,總之簡約最美的,能減少代碼就減少代碼,能不調用的就別調用,要不是天緣博客的文章都是牛長也不會添加這個功能
    2012-10-10
  • js實現盒子滾動動畫效果

    js實現盒子滾動動畫效果

    這篇文章主要為大家詳細介紹了js實現盒子滾動動畫效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-08-08
  • JavaScript 判斷瀏覽器是否支持SVG的代碼

    JavaScript 判斷瀏覽器是否支持SVG的代碼

    SVG(可縮放矢量圖形),接下來將介紹下如何判斷瀏覽器是否支持SVG,感興趣的朋友可以參考下哈,希望本代碼對你有所幫助
    2013-03-03
  • 談談基于iframe、FormData、FileReader三種無刷新上傳文件的方法

    談談基于iframe、FormData、FileReader三種無刷新上傳文件的方法

    發(fā)請求有兩種方式,一種是用ajax,另一種是用form提交,默認的form提交如果不做處理的話,會使頁面重定向。本篇文章通過實例給大家介紹基于iframe/FormData/FileReader三種無刷新上傳文件的方法,感興趣的朋友一起學習吧
    2015-12-12
  • JS實現上下左右對稱的九九乘法表

    JS實現上下左右對稱的九九乘法表

    九九乘法表使用很多種語言都可以實現,本文給大家介紹js使用for、while循環(huán)來完成四種對稱的九九乘法表,對九九乘法表需要的朋友參考下
    2016-02-02
  • JavaScript實現單鏈表過程解析

    JavaScript實現單鏈表過程解析

    這篇文章主要介紹了JavaScript實現單鏈表過程,鏈表中的元素在內存中不必是連續(xù)的空間。鏈表的每個元素有一個存儲元素本身的節(jié)點和指向下一個元素的引用。下面請和小編一起進入文章了解更多的詳細內容吧
    2021-12-12

最新評論

信阳市| 阳春市| 沈阳市| 揭阳市| 正镶白旗| 志丹县| 铜鼓县| 平和县| 河间市| 陈巴尔虎旗| 齐齐哈尔市| 伊宁县| 通海县| 绩溪县| 康乐县| 昌邑市| 龙井市| 花莲市| 株洲县| 金坛市| 奎屯市| 建宁县| 什邡市| 临猗县| 仙居县| 新邵县| 资阳市| 金湖县| 安吉县| 惠来县| 镇宁| 丰顺县| 新巴尔虎左旗| 榆树市| 平昌县| 鄯善县| 大同市| 报价| 北宁市| 昔阳县| 娄烦县|