談談我對盒模型的理解

原文地址:談談我對盒模型的理解 ?

盒子是無處不在的装哆。

html任何一個元素都可以看作一個盒子伐厌,這個盒子不可見台颠,但是它存在于頁面的每個角落褐望,也正是由于它不可見、不直觀串前,很多人在初學CSS的時候不能透徹得理解盒模型的概念瘫里,導致在頁面布局中出現(xiàn)各種各樣的問題。

盒子模型簡介

上面是一個盒子模型圖荡碾,一個盒子包括了content(實際內(nèi)容)谨读、border(邊框)、padding(內(nèi)邊距)和margin(外邊距)坛吁。

content(實際內(nèi)容)

盒子的內(nèi)容漆腌,顯示文本和圖像。我們給元素設(shè)置的width和height其實是content的寬高阶冈,

如果指定高度大于顯示內(nèi)容所需高度闷尿,多余的高度會產(chǎn)生類似內(nèi)邊距一樣的效果;如果指定高度小于顯示內(nèi)容所需高度女坑,會出現(xiàn)滾動條填具。如果元素內(nèi)容的高度大于元素框的高度,瀏覽器的具體行為取決于overflow屬性。

border(邊框)

元素的邊框是圍繞元素內(nèi)容的內(nèi)邊距的一條或多條線劳景。邊框由粗細誉简、樣式和顏色三部分組成。

padding(內(nèi)邊距)

清除內(nèi)容周圍的區(qū)域盟广,內(nèi)邊距是透明的闷串,取值不能為負,受盒子的Background屬性影響筋量,padding是有背景的烹吵。

margin(外邊距)

在元素外創(chuàng)建額外的空白,空白通常指不能放其他元素的區(qū)域桨武,而且在這個區(qū)域中可以看到父元素的背景(padding所帶的是本身的背景而非父元素)肋拔。margin經(jīng)常取負值實現(xiàn)定位的作用。

外邊距有一個合并問題呀酸,經(jīng)常使人們混淆凉蜂,簡單來說,外邊距合并指的是性誉,當兩個垂直外邊距相遇時窿吩,它們將形成一個外邊距。合并后的外邊距的高度等于兩個發(fā)生合并的外邊距的高度中的較大者错览。

兩種盒子模型

其實盒模型有兩種爆存,分別是ie盒子模型(IE6以下版本瀏覽器)和標準w3c盒子模型,區(qū)別在于前者content的寬度和高度包括了border和padding蝗砾。

margin(外邊界)雖不可見,但是它確實在文檔中占據(jù)了空間携冤,我們要區(qū)分兩個概念即:盒子所占空間(計入margin )和盒子實際的大械苛浮(不計入margin) 。

實例區(qū)分兩種盒模型

下面舉個例子來區(qū)分兩種盒模型:一個盒子的 margin 為 20px曾棕,border 為 2px扣猫,padding 為 10px,content 的寬為 200px翘地、高為 50px申尤。

ie盒子模型

盒子所占空間:width=20x2+200=240? ? ?   ? ? ? ? ? height=20x2+50=90

盒子實際大小:width=200? ? ? ?        ? height=50

標準w3c盒子模型

盒子所占空間:width=20x2+2x2+10x2+200=264?  ? height=20x2+2x2+10x2 +50=114

盒子實際大醒酶:width=200 +2x2+10x2 =224?    ? ? height=50+2x2+10x2=74

解釋到這里昧穿,有的人可能會想起CSS3里面有個叫做box-sizing的屬性,咦橙喘?兩個盒模型不就是它不同取值下的效果嗎时鸵?那我恭喜你,你說對了~

box-sizing和兩種盒模型不得不說的事

box-sizing有三個取值:

1、content-box:使元素遵循標準 w3c 盒子模型(默認值)饰潜。

2初坠、border-box:使元素遵循ie 盒子模型。

3彭雾、 inherit: 規(guī)定應從父元素繼承 box-sizing 屬性的值碟刺。

那么我可以用box-sizing的不同取值讓大家直觀地理解兩個盒子的區(qū)別,也順帶理解這個屬性薯酝,下面是需要用到的html代碼半沽,方便大家看得清楚,我給盒子外面添加一個寬高各500px的灰色背景蜜托。

????????<div class='bg'>

????????????<div class='box'></div>

????????</div>

box-sizing:content-box

? ????? .box{

? ? ????? ????? background-color: #91D4DA;

? ? ????????? ? width: 300px;

? ? ????????? ? height: 300px;

? ? ? ????????? padding: 20px;

? ? ? ????????? border: 10px solid #5B5B5B;

? ? ????????? ? box-sizing: content-box;? ? /*默認值抄囚,可以不寫*/

? ????????? }

下面改變padding和border的值

????????????.box{

????????????????background-color: #91D4DA;

????????????????width: 300px;

????????????????height: 300px;

????????????????padding: 50px;

????????????????border: 20px solid #5B5B5B;

????????????????box-sizing: content-box; /*默認值,可以不寫*/

????????}

大家可以發(fā)現(xiàn)橄务,元素盒子的實際寬度是隨padding和border改變的幔托。

box-sizing:border-box:

???????????? .box{

???????????????? background-color: #91D4DA;

???????????????? width: 300px;

???????????????? height: 300px;

???????????????? padding: 20px;

???????????????? border: 10px solid #5B5B5B;

???????????????? box-sizing: border-box;

???????????? }

下面改變padding和border的值

???????????? .box{

???????????????? background-color: #91D4DA;

???????????????? width: 300px;

???????????????? height: 300px;

???????????????? padding: 50px;

???????????????? border: 20px solid #5B5B5B;

??????????????? box-sizing: border-box;

???????????? }

發(fā)現(xiàn)區(qū)別了吧,當你遵循ie盒子模型時蜂挪,不管你如何設(shè)置padding和border(小于width/2)重挑,它只在盒子里面伸縮,不影響整體的寬高棠涮,這個border-box是不是在某些時候非常好用谬哀?但也不能盲目地用,因為它會影響content严肪,如果padding和border太大史煎,會把內(nèi)容擠掉的。

現(xiàn)在還在用IE6以下的瀏覽器的用戶已經(jīng)很少了驳糯,所以目前瀏覽器大部分元素都是基于W3C標準盒子模型 上篇梭。所以我們平常說的盒子模型一般就是標準

w3c 盒子模型 (但對于input、button元素默認border-box 酝枢,還是基于傳統(tǒng)的ie 盒子模型

)恬偷。一定有人會問,那我們怎樣讓我們的元素都遵循W3C標準盒子模型呢帘睦?哈哈袍患,看看你html的文件頭部是不是有一個<!DOCTYPE html> ,有這個竣付,就說明你已經(jīng)遵循W3C標準盒子模型了诡延。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市古胆,隨后出現(xiàn)的幾起案子孕暇,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,013評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件妖滔,死亡現(xiàn)場離奇詭異隧哮,居然都是意外死亡,警方通過查閱死者的電腦和手機座舍,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,205評論 2 382
  • 文/潘曉璐 我一進店門沮翔,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人曲秉,你說我怎么就攤上這事采蚀。” “怎么了承二?”我有些...
    開封第一講書人閱讀 152,370評論 0 342
  • 文/不壞的土叔 我叫張陵榆鼠,是天一觀的道長。 經(jīng)常有香客問我亥鸠,道長妆够,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,168評論 1 278
  • 正文 為了忘掉前任负蚊,我火速辦了婚禮神妹,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘家妆。我一直安慰自己鸵荠,他們只是感情好,可當我...
    茶點故事閱讀 64,153評論 5 371
  • 文/花漫 我一把揭開白布伤极。 她就那樣靜靜地躺著蛹找,像睡著了一般。 火紅的嫁衣襯著肌膚如雪哨坪。 梳的紋絲不亂的頭發(fā)上庸疾,一...
    開封第一講書人閱讀 48,954評論 1 283
  • 那天,我揣著相機與錄音齿税,去河邊找鬼。 笑死炊豪,一個胖子當著我的面吹牛凌箕,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播词渤,決...
    沈念sama閱讀 38,271評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼牵舱,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了缺虐?” 一聲冷哼從身側(cè)響起芜壁,我...
    開封第一講書人閱讀 36,916評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后慧妄,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體顷牌,經(jīng)...
    沈念sama閱讀 43,382評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,877評論 2 323
  • 正文 我和宋清朗相戀三年塞淹,在試婚紗的時候發(fā)現(xiàn)自己被綠了窟蓝。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 37,989評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡饱普,死狀恐怖运挫,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情套耕,我是刑警寧澤谁帕,帶...
    沈念sama閱讀 33,624評論 4 322
  • 正文 年R本政府宣布,位于F島的核電站冯袍,受9級特大地震影響匈挖,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜颠猴,卻給世界環(huán)境...
    茶點故事閱讀 39,209評論 3 307
  • 文/蒙蒙 一关划、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧翘瓮,春花似錦贮折、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,199評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至呵扛,卻和暖如春每庆,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背今穿。 一陣腳步聲響...
    開封第一講書人閱讀 31,418評論 1 260
  • 我被黑心中介騙來泰國打工缤灵, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人蓝晒。 一個月前我還...
    沈念sama閱讀 45,401評論 2 352
  • 正文 我出身青樓腮出,卻偏偏與公主長得像,于是被迫代替她去往敵國和親芝薇。 傳聞我的和親對象是個殘疾皇子胚嘲,可洞房花燭夜當晚...
    茶點故事閱讀 42,700評論 2 345

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

  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標簽默認的外補...
    _Yfling閱讀 13,728評論 1 92
  • H5移動端知識點總結(jié) 閱讀目錄 移動開發(fā)基本知識點 calc基本用法 box-sizing的理解及使用 理解dis...
    Mx勇閱讀 4,395評論 0 26
  • 移動開發(fā)基本知識點 一.使用rem作為單位 html { font-size: 100px; } @media(m...
    橫沖直撞666閱讀 3,453評論 0 6
  • 選擇qi:是表達式 標簽選擇器 類選擇器 屬性選擇器 繼承屬性: color洛二,font馋劈,text-align攻锰,li...
    wzhiq896閱讀 1,730評論 0 2
  • 玉蘭娶吞,先花后葉,那不顯山不露水的性格得到的許多詩人的贊賞君珠,也博得了后人的喜愛寝志。有些人也將玉蘭視為高潔的形象。 我的...
    phantomses閱讀 481評論 0 3