【前端學習】-盒模型

【前言】前端頁面的構建過程中,盒模型相關的概念會一直如影隨形,因此需要深刻地理解好盒模型。本文會先簡單描述一下盒模型,然后描述一些平常會遇到的注意點。

本文將從1、盒模型描述;2、W3C標準盒模型/IE傳統(tǒng)盒模型 ;3.box-sizing屬性;4,常見問題。

一、盒模型描述

之前跟朋友一起打羽毛球的時候看到羽毛球場地,我X,這不就是傳說中的盒模型么,因此我還被他們調(diào)侃代碼中毒太深。首先,po一張圖。

眾所周知,羽毛球運動中,雙打的安全區(qū)域是標注的紅色線框內(nèi),單打的安全區(qū)域是標注的黃色線框內(nèi),單雙打重疊的區(qū)域就是上面標注的藍色框框了,一個羽毛球廠的邊界線就是最外層的白色框框,且各個羽毛球場中間總會留一些間隙,就是外層白色框框與邊界的距離。

將這些對比盒模型的話:

1.藍色框框就是我們?nèi)粘Kf的內(nèi)容框content,內(nèi)容只會在這個區(qū)域展示;

2.最外層的那個邊界線就是我們所說的border,

3.content和border中間的距離就是內(nèi)邊距padding

4.最外層的邊界線與旁邊的白邊的間距就是外邊距margin。

回歸到盒模型就如下圖所示:

二、W3C標準盒模型/IE傳統(tǒng)盒模型

1.W3C標準盒模型如下圖如果設置添加下面的css屬性,則在chrome下的預覽效果及l(fā)ayout是

.box{

background-color:lightpink;

width:255px;

height:300px;

border:20px solid#f00;

padding:20px;

margin:20px;

}


從上方可以看出來

內(nèi)盒尺寸(大小) = width + padding + border

外盒尺寸(空間尺寸)= width + pading + border + margin

經(jīng)過計算可以得出:

div的內(nèi)盒寬度 = width+ (padding + border )*2 = 335,內(nèi)盒外盒高度= height+ (padding + border)*2=380

div的外盒寬度 = width+ (padding + border +margin)*2 = 375,外盒外盒高度= height+ (padding + border + margin*2=420

內(nèi)容區(qū)域content的寬度 = width = 255,content的高度=height=300

2.IE傳統(tǒng)盒模型如果在ie下預覽及l(fā)ayout則是下面的效果


從上方可以看出來

內(nèi)盒尺寸(大?。?= width

外盒尺寸(空間尺寸)= winth + margin

div的內(nèi)盒寬度 = width= 255,內(nèi)盒外盒高度= height= 300

div的內(nèi)盒高度 = height + margin=255+ 20*2=295,內(nèi)盒外盒高度=300+ margin= 300+ 20*2=340

內(nèi)容content的寬度 = 內(nèi)盒寬度- padding -border =255- (20 + 20)*2 = 175,content的高度=內(nèi)盒高度- padding -border =300- (40 + 10)*2 =220

【總結(jié)】

W3C標準盒模型:

內(nèi)盒尺寸(大?。?= width + padding + border

外盒尺寸(空間尺寸)= width + pading + border + margin

IE傳統(tǒng)(IE6)盒模型

內(nèi)盒尺寸(大小) = width

外盒尺寸(空間尺寸)= winth + margin

三、box-sizing屬性

【基礎概念】:以特定方式定義匹配某個區(qū)域的特定個元素【兼容性IE8+】

【屬性值】

content-box:寬度和高度分別用到元素的內(nèi)容框,即上方所示的W3C標準盒模型【默認值】

border-box:寬度和高度分別用到元素的內(nèi)容框、內(nèi)邊距,邊框,即上方所示的IE傳統(tǒng)盒模型

inherit:繼承父元素的box-sizing屬性

【tpis】移動端,建議添加box-sizing:border-box值,因為我們頁面局部基本上是按區(qū)域已經(jīng)布局好了,但是有的時候改變一個元素的邊距值,可能會導致鈣元素的大小變大直接元素下移,頁面錯亂。但是添加了box-sizing:border-box可以保證頁面整理布局不會亂。

三、常見問題

1.margin重疊問題

塊級元素水平方向不會重疊,垂直方向可能會重疊(若重疊,邊距取較大的值;出現(xiàn)負值則取兩者差值的絕對值)

如下圖所示,若上面的元素設置margin:20px;下面的元素設置margin:10px。則兩個元素在垂直方向的margin會重疊且取相對大的值。

這里情況比較復雜,這里先簡單說下,只有會在寫一篇跟margin相關的文章詳細闡述下。


2.margin不生效

最多出現(xiàn)在firefox,或者受浮動及定位影響,可以考慮用padding代替。

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標簽默認的外補...
    _Yfling閱讀 14,141評論 1 92
  • 移動開發(fā)基本知識點 一.使用rem作為單位 html { font-size: 100px; } @media(m...
    橫沖直撞666閱讀 3,725評論 0 6
  • H5移動端知識點總結(jié) 閱讀目錄 移動開發(fā)基本知識點 calc基本用法 box-sizing的理解及使用 理解dis...
    Mx勇閱讀 4,829評論 0 26
  • 1.行內(nèi)元素和塊級元素?img算什么?行內(nèi)元素怎么轉(zhuǎn)化為塊級元素? 行內(nèi)元素:和有他元素都在一行上,高度、行高及外...
    極樂君閱讀 2,601評論 0 20
  • 適應這個世界最好的方式就是寫作 煩的時候我就寫寫 忍不住的時候我就寫寫 想你是否會成為另外一種方式呢 煩的時候我就...
    怪物嗚嗚閱讀 434評論 0 0

友情鏈接更多精彩內(nèi)容