JavaScript盒子模型及其屬性

JavaScript盒子模型,指的是通過JavaScript中提供的一系列的屬性和方法,獲取頁面中元素的樣式信息值。

**內(nèi)容的寬度和高度: **設(shè)置的width/height這兩個樣式就是內(nèi)容的寬和高,如果沒有設(shè)置height值,容器的高度會根據(jù)里面的內(nèi)容進行自適應(yīng),這樣獲取的值就是真實的內(nèi)容的高; 如果設(shè)置了固定的高度了,不管內(nèi)容是多了還是少了,其實我們內(nèi)容的高度指的都是設(shè)定的那個值。
真實內(nèi)容的寬度和高度: 這個代指的是實際內(nèi)容的寬高,和自己設(shè)置的width/height沒有必然的聯(lián)系。例如: 設(shè)置高度為200px,如果內(nèi)容有溢出,那么真實內(nèi)容的高度是要把溢出的內(nèi)容寬高也要加進去。

client系列 (當前元素的幾個私有屬性)
clientWidth/ clientHeight: 內(nèi)容的寬/高+左右/上下padding,和內(nèi)容溢出是沒有關(guān)系的。
clientLeft: 左邊框的寬度;
clientTop: 上邊框的高度 (borderLeftWidth/ borderTopWidth)。

offset系列
offsetWidth/ offsetHeight: clientWidth/clientHeight + 左右/上下邊框,和內(nèi)容溢出無關(guān)。
offsetParent: 當前元素的父級參照物。
offsetTop/ offsetLeft: 當前元素的外邊框距離父級參照物內(nèi)邊框的偏移量。

scroll系列
scrollWidth/ scrollHeight: 和clientWidth/ clientHeight一模一樣,其前提: 容器的內(nèi)容沒有溢出。
如果容器中的內(nèi)容有溢出,獲取的結(jié)果是如下規(guī)則:
1). scrollWidth: 真實內(nèi)容的寬度(包含溢出) + 左padding。
2). scrollHeight: 真實內(nèi)容的高度(包含溢出) + 上padding。
獲取到的結(jié)果都是約等于的值, 因為: 同一個瀏覽器, 是否設(shè)置overflow='hidden'對于最終的結(jié)果是有影響的; 在不同的瀏覽器中,獲取到的結(jié)果也是不相同的。
scrollLeft/ scrollTop: 滾動條卷去的寬度/高度。


關(guān)于JavaScript盒子模型屬性取值的問題
通過這13個屬性值獲取的結(jié)果永遠不可能出現(xiàn)小數(shù),都是整數(shù); 瀏覽器在獲取結(jié)果的時候, 會在原來真實的結(jié)果上進行四舍五入。


關(guān)于操作瀏覽器本身的盒子模型信息
clientWidth/ clientHeight: 是當前瀏覽器可視窗口(一屏幕的)的寬度和高度。
scrollWidth/ scrollHeight: 是當前頁面的實際寬度和高度(所有屏加起來的寬度和高度), 這些是約等于的值。
不管哪些屬性,也不管是什么瀏覽器,也不管是獲取還是設(shè)置,想要都兼容,需要寫兩套:
document.documentElement[attr]||document.body[attr]; 必須document.documentElement在前
設(shè)置,獲取都要寫兩套。

    document.documentElement.clientWidth || document.body.clientWidth;
    document.documentElement.scrollTop || document.body.scrollTop;
    document.documentElement.scrollTop = 0;
    document.body.scrollTop = 0;

編寫一個有關(guān)于操作瀏覽器盒子模型的方法

    // win: 編寫一個有關(guān)于操作瀏覽器盒子模型的方法
    // 如果值傳遞了attr, 沒有傳遞value, 默認的意識是獲取樣式值。
    // 如果兩個參數(shù)都傳遞了, 意思是設(shè)置某一個樣式屬性的值。
    function win(attr, value) {
        if (typeof value === 'undefined') { // 說明沒有傳遞value
            return document.documentElement[attr] || document.body[attr];
        }

        document.documentElement[attr] = value;
        document.body[attr] = value;
    }
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標簽默認的外補...
    _Yfling閱讀 13,807評論 1 92
  • HTML標簽解釋大全 一、HTML標記 標簽:!DOCTYPE 說明:指定了 HTML 文檔遵循的文檔類型定義(D...
    米塔塔閱讀 3,323評論 1 41
  • JS盒子模型指的是通過JS中提供的一系列的屬性和方法,獲取頁面中元素的樣式信息值 client系列/offset系...
    gaoqizhuhui閱讀 456評論 0 0
  • 一.首先介紹常用的屬性: HTML精確定位:scrollLeft,scrollWidth,clientWidth,...
    silingling閱讀 3,095評論 0 1
  • 文/微塵 七夕這天不見了喜鵲 它們又在銀河搭橋 這天,相愛的人 眼淚 憂傷化作 天邊最美的彩虹 見,也凄涼 悲切 ...
    綿綿鄉(xiāng)愁閱讀 273評論 0 0