聊聊標准盒模型和怪異盒模型的區別


作為前端工作者,想必對於盒模型這個概念應該並不陌生,我們在平日的工作中無時無刻不在使用它,但是作為剛剛踏入這個行業的小白來講,對於標准盒模型和怪異盒模型的理解或許還是傻傻分不清,這里小編我就來跟大家聊一聊關於我理解中的盒模型的那些事兒~希望對剛剛踏入這個行業的小伙伴們有所幫助!!!廢話不多說,我們走起~~~~

首先我們要了解一下什么是盒模型?下面甩出盒模型的解釋!!

通俗的講,盒模型是css布局的基礎,它的作用是規定了網頁元素在網頁上如何顯示以及元素之間的相互關系,css定義所有的元素都可以擁有像盒子一樣的外形和平面空間。即都包含內容區、補白(填充)、邊框、邊界(外邊距)。

  

上圖很明白的就可以看出來,盒模型由以下幾部分組成:

內容區(content):元素的寬和高
補白(填充)(padding):元素內容和外邊緣之間的空間
邊框(border):盒子的外邊緣
邊界(外邊距)(margin):盒子外邊緣以外的空間

這其實就是一個標准的盒模型。

那么接下來,我們再來看看什么是怪異盒模型吧。下圖所示:

  

可以明顯的看出,怪異盒模型的組成部分則只划分為了兩個部分,分別為:

width/height(元素的內容寬或高):內容區(content)、補白(填充)(padding)以及邊框(border)的總和

邊界(外邊距)(margin):盒子外邊緣以外的空間

不難看出,怪異盒模型的一個構成形式為元素的寬高包含了填充以及邊框所占有的空間,也就是說當我們頁面元素為怪異盒模型的時候,給予元素padding或者border屬性之后並不會改變元素原有寬高的值,而如果我們給標准盒模型的元素添加padding或者border屬性之后,元素最終的寬高值會發生變化,盒子會變大,這也就是標准盒模型與怪異盒模型區別所在。(下面通過案例以及圖片給與對比加深理解)

 1 <!DOCTYPE html>
 2 <html>
 3     <head>
 4         <meta charset="UTF-8">
 5         <title></title>
 6         <style type="text/css">
 7             .box{
 8                 width:300px;
 9                 height:300px;
10                 background:#f00;
11                 border:10px solid #000;
12                 padding:20px; 
13                 box-sizing: border-box;/* 轉換成怪異盒模型 該屬性下面有說明*/
14             }
15         </style>
16     </head>
17     <body>
18         <div class="box"></div>
19     </body>
20 </html>  

標准盒模型的呈現形式為:

  

圖片上可以看到,div的值由原始的300加上padding和border的值最后變為了360x360。

怪異盒模型的呈現形式為:

   

可以看到,加上padding和border值之后,div的寬度和高度依舊為300x300不變,填充以及邊框屬性值都包含在了元素的體內。

相信看到這里,大家應該能夠理解他們的不同之處了吧?

PS : 我們可以通過CSS3屬性進行盒模型之間的轉換操作,下面是它的一個屬性設置: 

1 border-sizing: border-box/* 表示怪異盒模型 */
2 border-sizing: content-box/* 表示標准盒模型 */

通過設置該屬性,我們可以轉換元素的盒模型進行自己想要的效果呈現,當然我們常用的一些元素中也有自帶怪異盒模型屬性的,例如我們大家熟知的頁面提交按鈕,還有表格table,其實他們都是屬於怪異盒模型的,所以在以后的工作中,應該明白為什么明明設置了填充元素高度依舊不夠的緣故了吧?


 

結束語-------------------分享知識從我做起,大家一起高飛猛進!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM