秒懂JS中的盒模型

2021-08-21 19:45:26 字數 2798 閱讀 2635

首先要明白什麼是js盒子模型???#box(有很多自己的私有的屬性) ->htmldivelement.prototype ->htmlelement.prototype ->element.prototype ->node.prototype ->eventtarget.prototype ->object.prototype

var box = document.getelementbyid(「box」);

console.dir(box);

內容的寬度和高度:我們設定的width/height這兩個樣式就是內容的寬和高;如果沒有設定height值,容器的高度會根據裡面內容自己進行適應,這樣獲取的值就是真實內容的高;如果設定固定的高度了,不管內容是多了還是少了,其實我們內容的高度指的都是設定的那個值;

真實內容的寬度和高度:這個代指的是實際內容個的寬高(和我們設定的height沒有必然的聯絡),例如:我設定高度為200px,如果內容有溢位,那麼真實內容的高度是要把溢位內容的高度也要加進來的

1、client系列(當前元素的幾個私有的屬性)

clientwidth/clientheight:內容的寬度/高度+左右/上下填充 (和內容溢位沒有關係)

clientleft:左邊框的寬度 clienttop:上邊框的高度 (border[left/top]width)

2、offset系列

offsetwidth/offsetheight:clientwidth/clientheight+左右/上下邊框 (和內容是否溢位也是沒有任何的關係的)

offsetparent:當前元素的父級參照物

offsetleft/offsettop:當前元素的外邊框距離父級參照物的內邊框的偏移量

3、scroll系列

scrollwidth/scrollheight:和我們的clientwidth/clientheight一模一樣(前提是:容器中的內容沒有溢位的情況下)

如果容器中的內容有溢位,我們獲取的結果是如下規則:

scrollwidth:真實內容的寬度(包含溢位)+左填充

scrollheight:真實內容的高度(包含溢位)+上填充

獲取到的結果都是"約等於"的值,因為:同乙個瀏覽器,我們是否設定overflow='hidden'對於最終的結果是有影響的;在不同的瀏覽器中我們獲取到的結果也是不相同的;

scrollleft/scrolltop:滾動條卷去的寬度/高度

2、關於js盒子模型屬性取值的問題

我們通過這13個屬性值獲取的結果永遠不可能出現小數,都是整數;瀏覽器獲取結果的時候,在原來真實結果的基礎上進行四捨五入;

3、關於操作瀏覽器本身的盒子模型資訊

clientwidth/clientheight是當前瀏覽器可視視窗的寬度和高度(一螢幕的寬度和高度)

scrollwidth/scrollheight是當前頁面的真實寬度和高度(所有屏加起來的寬度和高度~但是是乙個約等於的值

我們不管哪些屬性,也不管是什麼瀏覽器,也不管是獲取還是設定,想要都相容的話,需要寫兩套

document.documentelement[attr]||document.body[attr]; //

->必須document.documentelement在前

例如:[獲取]

document.documentelement.clientwidth||document.body.clientwidth

[設定也需要寫兩套]

document.documentelement.scrolltop=0;

document.body.scrolltop=0;

function win(attr, value) 

//->

"設定"

document.documentelement[attr] = value;

document.body[attr] = value;

}console.log(win("clientheight"));

win("scrolltop", 0);

win:乙個有關於操作瀏覽器盒子模型的方法

如果只傳遞了attr沒有傳遞value,預設的意思是「獲取」

如果兩個引數都傳遞了,意思是「設定」

不嚴謹的來說這就是有關於」類的過載」:同乙個方法,通過傳遞引數的不同實現了不同的功能

js盒子模型中:client系列/offset系列/scrollwidth/scrollheight都是」唯讀」屬性->只能通過屬性獲取值,不能通過屬性修改元素的樣式

scrolltop/scrollleft:滾動條卷去的高度/寬度(這兩個屬性是唯一」可讀寫」屬性)

= 0;//->直接回到了容器的頂部

我們的scrolltop的值是存在邊界值(最大和最小值的),我們設定的值比最小值小或者比最大值大都沒用,起到效果的依然是邊界的值

[最小值是零]

box.scrolltop = -1000

;//->直接回到了容器的頂部,沒有超出

console.log(box.scrolltop);//->0

[最大值是=真實的高度-當前容器一螢幕的高度]

var maxtop = box.scrollheight - box.clientheight

; console.log(maxtop);

秒懂JS建立物件的方式

建構函式建立物件 var obj new object obj.屬性名 屬性值 新增屬性 物件字面量 obj function createperson name,age,job return obj 建立乙個新物件,將物件返回 var obj1 createperson 張三 20 軟體工程師 v...

關於js 盒模型

1 內容就比如我們所種植的農作物所佔據的範圍。2 填充 padding 是指所種植農作物至區域邊緣之間的距離。3 邊框 border 是指每一塊土地邊緣的厚度。4 外邊距 margin 是指一塊土地與另一塊土地之間的間距。padding是盒子內部,內容與邊緣的距離 padding的作用是控制內容子元...

css和js盒模型

1.什麼是盒模型?在html頁面中,每乙個元素都可以看做是乙個盒子,而每個盒子都是由 內容區 content 填充區 padding 邊框區 border 外邊界區 margin 四部分組成的。2.盒模型的模式 盒模型分為兩種模式,分別是標準模式和怪異模式 標準模式 乙個塊的總寬度 width ma...