摘要:盒模型的簡(jiǎn)介本文簡(jiǎn)單的總結(jié)了一些基本概念,知識(shí)點(diǎn)以及細(xì)節(jié)問(wèn)題作為前端人員,盒模型是最基礎(chǔ)的知識(shí)點(diǎn),在排版與布局時(shí)不可避免與盒模型打交道。
1. 盒模型的簡(jiǎn)介 本文簡(jiǎn)單的總結(jié)了一些基本概念,知識(shí)點(diǎn)以及細(xì)節(jié)問(wèn)題
作為前端人員,盒模型是最基礎(chǔ)的知識(shí)點(diǎn),在排版與布局時(shí)不可避免與盒模型打交道。
在我們編寫(xiě)HTML時(shí),網(wǎng)頁(yè)上的內(nèi)容幾乎都是被包在一個(gè)個(gè)元素(當(dāng)然也可以叫做標(biāo)簽)中的,最常見(jiàn)的有div、span、a、img等等。雖然標(biāo)簽的個(gè)數(shù)很多樣,但是總的來(lái)說(shuō)可以把元素分為三種
塊狀(block)元素
行內(nèi)(inline)元素
行內(nèi)塊(inline-block)元素
在具體講總結(jié)盒模型前,先簡(jiǎn)單的介紹一下這幾種元素各自的特性。
在CSS中我們經(jīng)常聽(tīng)到的一個(gè)詞叫做“文檔流”,那么到底什么是文檔流呢?“流”實(shí)際上就是CSS中的一種基本的定位和布局機(jī)制。上述所說(shuō)的三種元素當(dāng)然要遵守一定的布局機(jī)制啦,具體來(lái)說(shuō):
塊狀元素: 典型代表div
在默認(rèn)情況下寬度會(huì)自動(dòng)鋪滿于父元素,也就是一個(gè)塊級(jí)元素會(huì)獨(dú)占一行,而且它后面的元素會(huì)另起一行顯示。
寬(width)、高(height)、內(nèi)邊距(padding)、外邊距(margin)是可以進(jìn)行具體設(shè)置的
行內(nèi)元素: 典型代表span
行內(nèi)元素不會(huì)獨(dú)占一行,相鄰的行內(nèi)元素會(huì)依次排列,不足則換行。
寬高是無(wú)法指定的,其大小是由里面的內(nèi)容撐開(kāi)決定。
雖然寬高無(wú)法指定,但是水平方向上的內(nèi)邊距(padding)、外邊距(margin)是可以進(jìn)行設(shè)置的。
當(dāng)對(duì)一個(gè)文檔進(jìn)行布局的時(shí)候,瀏覽器渲染引擎會(huì)根據(jù)CSS-Box模型將所有元素表示為一個(gè)矩形盒子,在CSS中會(huì)通過(guò)盒模型去描述這些矩形盒子————元素所占空間的內(nèi)容。
那么盒子里到底有什么呢,如下圖所示:
對(duì)于一個(gè)盒子來(lái)說(shuō)它由四個(gè)部分組成:其中margin叫做外邊距,border叫做邊框,padding叫做內(nèi)邊距,content叫做內(nèi)容區(qū)域
細(xì)分一點(diǎn),margin它可以分為margin-left,margin-right,margin-top和margin-bottom。同理border和padding也有這樣的屬性。
盒子出來(lái)了,自然要計(jì)算它的大小,但是但是,又有幺蛾子了,在計(jì)算大小的時(shí)候有兩套不同的標(biāo)準(zhǔn),
也就是有兩種盒模型:
第一種是W3C的標(biāo)準(zhǔn)模型
第二種是IE的怪異盒模型
自然不同的盒子模型會(huì)有不同的計(jì)算方式
2. 尺寸計(jì)算在W3C標(biāo)準(zhǔn)模式下:一個(gè)盒子的空間占有寬度=content width + padding + border + margin
在IE怪異盒模型:一個(gè)盒子的空間占有寬度=width(padding和border被包含在內(nèi)了) + margin
高度可以同理計(jì)算
由于存在以上的計(jì)算方法:
在CSS的標(biāo)準(zhǔn)盒模型中,width和height指的是內(nèi)容區(qū)域的寬度和高度。
增加內(nèi)邊距、邊框和外邊距不會(huì)影響內(nèi)容區(qū)域的尺寸,但是會(huì)增加整個(gè)盒子的大小。這個(gè)特點(diǎn)其實(shí)有的時(shí)候有點(diǎn)討厭的————我們可以通過(guò)設(shè)置box-sizing(CSS3新增屬性)來(lái)改變盒子被撐大。
那么box-sizing到底是什么呢?在MDN中有這樣的解釋說(shuō)明:
該屬性用于更改用于計(jì)算元素寬度和高度的默認(rèn)的 CSS 盒子模型??梢允褂么藢傩詠?lái)模擬不正確支持CSS盒子模型規(guī)范的瀏覽器的行為。
在標(biāo)準(zhǔn)盒模型中,你設(shè)置一個(gè)元素的 width 與 height 只會(huì)應(yīng)用到這個(gè)元素的內(nèi)容區(qū)。如果這個(gè)元素有border或padding,當(dāng)我們?cè)谡{(diào)整一個(gè)元素的寬度或高度時(shí)需要時(shí)刻注意這個(gè)元素的邊框和內(nèi)邊距,也就上面講的會(huì)被撐大。當(dāng)我們?cè)趯?shí)現(xiàn)響應(yīng)式布局時(shí)候,這個(gè)特點(diǎn)尤為煩人。
box-sizing屬性的默認(rèn)值為content-box,也就是標(biāo)準(zhǔn)盒模型。
box-sizing另外一個(gè)屬性值border-box指的就是IE盒模型。
了解盒模型的計(jì)算方式是非常重要的,現(xiàn)在的網(wǎng)頁(yè),尤其是移動(dòng)端的頁(yè)面,需要適應(yīng)于不同的屏幕大小~~~
此外,如果在ie6,7,8中DOCTYPE缺失也會(huì)觸發(fā)IE模式。
參考文獻(xiàn):
1.張?chǎng)涡?鑫空間-鑫生活
2.MDN-web技術(shù)文檔
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/113759.html
摘要:判斷步驟如下如果有一個(gè)操作數(shù)是布爾值,則在比較相等性之前先將其轉(zhuǎn)換為數(shù)值轉(zhuǎn)換為,而轉(zhuǎn)換為。實(shí)際上是對(duì)比運(yùn)用上面的順序,是布爾值,所以轉(zhuǎn)化為數(shù)值為。 『前端碎碎念』系列會(huì)記錄我平時(shí)看書(shū)或者看文章遇到的問(wèn)題,一般都是比較基礎(chǔ)但是容易遺忘的知識(shí)點(diǎn),你也可能會(huì)在面試中碰到。 我會(huì)查閱一些資料并可能加上自己的理解,來(lái)記錄這些問(wèn)題。更多文章請(qǐng)前往我的個(gè)人博客 類(lèi)似標(biāo)題中的問(wèn)題還有很多,例如: 為...
摘要:前端碎碎念系列會(huì)記錄我平時(shí)看書(shū)或者看文章遇到的問(wèn)題,一般都是比較基礎(chǔ)但是容易遺忘的知識(shí)點(diǎn),你也可能會(huì)在面試中碰到。當(dāng)兩個(gè)操作數(shù)都是數(shù)值時(shí),執(zhí)行常規(guī)的數(shù)值加法計(jì)算。關(guān)鍵還是要加深對(duì)中對(duì)數(shù)值轉(zhuǎn)換的理解,以不變應(yīng)萬(wàn)變。 『前端碎碎念』系列會(huì)記錄我平時(shí)看書(shū)或者看文章遇到的問(wèn)題,一般都是比較基礎(chǔ)但是容易遺忘的知識(shí)點(diǎn),你也可能會(huì)在面試中碰到。 我會(huì)查閱一些資料并可能加上自己的理解,來(lái)記錄這些問(wèn)題...
摘要:使用命名空間的目的是對(duì)標(biāo)識(shí)符的名稱(chēng)進(jìn)行本地化,以避免命名沖突或名字污染,關(guān)鍵字的出現(xiàn)就是針對(duì)這種問(wèn)題的。缺省參數(shù)概念缺省參數(shù)是聲明或定義函數(shù)時(shí)為函數(shù)的參數(shù)指定一個(gè)默認(rèn)值。 ...
摘要:在美國(guó)和一些其他發(fā)達(dá)國(guó)家,程序員已經(jīng)從一個(gè)相對(duì)高端的行業(yè)變成越來(lái)越多普通人的日常。是五十個(gè)編輯推薦話題之一軟件開(kāi)發(fā)者是美國(guó)四個(gè)州最常見(jiàn)的職業(yè)圖片來(lái)源我們不難設(shè)想,把軟件開(kāi)發(fā)的工作自動(dòng)化掉,對(duì)相關(guān)企業(yè)來(lái)說(shuō)將會(huì)是一個(gè)多么巨大的誘惑。 在美國(guó)和一些其他發(fā)達(dá)國(guó)家,程序員已經(jīng)從一個(gè)相對(duì)高端的行業(yè)變成越來(lái)越多普通人的日常。 JavaScript 是 Medium 五十個(gè)編輯推薦話題之一: http...
摘要:更多文章請(qǐng)前往我的個(gè)人博客這個(gè)問(wèn)題是有關(guān)執(zhí)行順序和的。其中,整體代碼,可以理解為待執(zhí)行的所有代碼。當(dāng)隊(duì)列執(zhí)行完后再執(zhí)行一個(gè)任務(wù)。然后再次回到新的事件循環(huán)。所以兩個(gè)執(zhí)行完后隊(duì)列里只剩下第一個(gè)里的。 『前端碎碎念』系列會(huì)記錄我平時(shí)看書(shū)或者看文章遇到的問(wèn)題,一般都是比較基礎(chǔ)但是容易遺忘的知識(shí)點(diǎn),你也可能會(huì)在面試中碰到。 我會(huì)查閱一些資料并可能加上自己的理解,來(lái)記錄這些問(wèn)題。更多文章請(qǐng)前往我...
閱讀 1151·2021-11-23 10:04
閱讀 2412·2021-11-22 15:29
閱讀 2806·2021-11-19 09:40
閱讀 729·2021-09-22 15:26
閱讀 2129·2019-08-29 16:27
閱讀 2498·2019-08-29 16:10
閱讀 1932·2019-08-29 15:43
閱讀 3284·2019-08-29 12:43