盒模型

一.盒模型包括哪些屬性?

盒模型包括的屬性有:

  • margin:外邊距。它包括margin-top、margin-right、margin-buttom、margin-left。margin的最基本用途就是控制元素周圍空間的間隔,它永遠是透明的。
  • border:邊框。它包括border-top、border-right、border-buttom、border-left。
  • padding:內邊距。它包括padding-top、padding-right、padding-buttom、padding-left。padding是用來使元素與內容有一定的間隔。
  • content。
    在網頁中,每個元素都被認為是一個矩形的盒子。
    盒模型

    如果要它顯示你設計的寬高大小,使用命令 box-sizing: border-box;,這樣有的時候會便于計算。
    這里需要強調一下:
    1.對于行內元素,手動設置寬高是無效的,它本身的寬高是由自身決定的。
    2.行內元素可以設置margin、padding,但是只有水平方向,也就是左右方向的margin和padding是有效的,垂直方向,也就是上下方向的margin和padding是無效的。而如果上下padding如果設置邊框或者背景色,會把邊框和背景色撐開。但是它本身并不會擠占空間,這樣的話可能會出現一個覆蓋的問題。

二.邊距合并

外邊距合并指的是,當兩個垂直外邊距相遇時,它們將形成一個外邊距。合并后的外邊距的高度等于兩個發生合并的外邊距的高度中的較大者。但是注意只有普通文檔流中塊框的垂直外邊距才會發生外邊距疊加。行內框、浮動框或絕對定位框之間的外邊距不會合并。設置了display:inline-block的元素,垂直margin不會被合并
一般來說, 垂直外邊距合并有三種情況:

  • 元素自身合并。當元素沒有內容(即空元素)、內邊距、邊框時, 它的上下邊距就會相遇了, 即會產生合并(垂直方向)。 如果為元素添加內容、 內邊距、 邊框其中的任何一項, 都會取消合并。
  • 元素合并相鄰元素(兄弟合并),如果它們的上下邊距相遇,即會產生合并。
  • 包含元素合并(父子合并)。包含元素的外邊距隔著父元素的內邊距和邊框,當這兩項都不存在的時候,父子元素垂直外邊距相鄰,產生合并。 添加任何一項即會取消疊加。

三.text-align: center的作用是什么,作用在什么元素上?能讓什么元素水平居中。

text-align: center的用于塊級元素,比如說一個div或者段落上,使塊級元素內部的行內元素水平居中。這個所謂的居中是針對自己的父容器,可以參考下面的示例。

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<title>盒模型</title>
<style>
    .box1{
    width: 100px;
    height: 100px;
    border: 3px solid;
    margin: 20px;
    padding: 20px;
}
    .box2{
        width: 50px;
        height: 50px;
        border: 3px solid;
        margin: 5px;
        padding: 5px;
        background: red;
        text-align: center;
   }
</style>
</head>
<body>
    <div class="box1">
        <div class="box2">
            <a href="#">Link</a>
        </div>
    </div>
</body>
</html>
針對父容器居中

四.如果遇到一個屬性想知道兼容性,在哪查看?

想要知道一個屬性的兼容性,可以在Can I Use上面查看。
比如說輸入text-align,就可以知道它的兼容性。

Can I Use

五.IE 盒模型和W3C盒模型有什么區別?

IE盒模型并不只是設置的內容寬高大小,還要包括border和padding;W3C盒模型只是內容寬高的大小。

  • ie678怪異模式(不添加 doctype)使用 ie 盒模型,寬度=邊框+padding+內容寬度。


    IE 盒模型
  • chrome, ie9+, ie678(添加 doctype) 使用標準盒模型, 寬度= 內容寬度。


    標準盒模型

六.以下代碼的作用?兼容性?

*{ box-sizing: border-box;
}

box-sizing是定義元素盒尺寸大小的方式。它的屬性值可以為content-box、padding-box、border-box、inherit。

  • box-sizing: content-box;這是盒模型默認值,也就是上面提到的標準盒模型。計算方法為width/height=content,表示指定的寬度和高度僅限內容區域,邊框和內邊距的寬度不包含在內。
  • box-sizing: padding-box;計算方法為width/height=content+padding,表示指定的寬度和高度包含內邊距和內容區域,邊框寬度不包含在內。
  • box-sizing: border-box;計算方法為width/height=content+padding+border,表示指定的寬度和高度包含邊框、內邊距和內容區域。這就是上面提到的IE盒模型
  • box-sizing: inherit;繼承父元素中box-sizing屬性的值。

為了說明,來舉個例子。

<!DOCTYPE HTML> 
<html> 
<head> 
<meta charset="utf-8"> 
<title>盒子尺寸的計算方法</title> 
<style type="text/css"> 
div {  
    margin:5px;  
    width:200px;                   
    height:80px;                      
    background-color: red;  
    border:10px solid;       
    padding:10px;                    
    font-weight:bold;  
    font-size:18px;  
    line-height:40px;  
}  
.s1 {  
    box-sizing:border-box;  
.s2 {  
    box-sizing:padding-box;   
}  
.s3 {  
    box-sizing:content-box;   
}  
</style> 
</head> 
<body> 
<div class="s1">border-box</div> 
<div class="s2">padding-box</div> 
<div class="s3">content-box</div> 
</body> 
</html> 

但是由于webkit內核的瀏覽器不支持屬性值padding-box,故表現出默認的content-box效果。


效果圖

再來回到題目當中,“*”表示選中所有的元素,box-sizing使用的計算方法為border-box,它使頁面所有元素使用content里包括border、padding的盒模型,也就是采用IE盒模型。
舉個例子。

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<title>盒模型</title>
<style>
    .box{
    width: 100px;
    height: 100px;
    border: 3px solid;
    margin: 20px auto;
    padding: 20px;
    background: yellow;
    }
    *{
        box-sizing: border-box;
    }
</style>
</head>
<body>
    <div class="box">       
    </div>
</body>
</html>

盒模型大小

盒模型大小

經過審查元素,就可以看到它顯示的總尺寸就是設置content的寬高。
它的兼容性可以在Can I Use上面查看。
box-sizing兼容性

七.代碼

寫一個 btn 的class, 任何 a,span,div,button添加此class后后變成如下按鈕的樣式(鼠標hover背景色#c14d21,鼠標按下背景色#e25f31)。

<a class="btn" href="#">確定</a>
<span class="btn" >取消</span>
<div class="btn">提交</div>
<button class="btn"> 發送</button>

效果

代碼的github地址:Github
預覽效果

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,739評論 6 534
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,634評論 3 419
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,653評論 0 377
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,063評論 1 314
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,835評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,235評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,315評論 3 442
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,459評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,000評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,819評論 3 355
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,004評論 1 370
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,560評論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,257評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,676評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,937評論 1 288
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,717評論 3 393
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,003評論 2 374

推薦閱讀更多精彩內容

  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標簽默認的外補...
    _Yfling閱讀 13,776評論 1 92
  • 一、盒模型包括哪些屬性? CSS盒模型~即定義了Web頁面中的元素是如何看做盒子來解析CSS盒模型屬性有: con...
    dengpan閱讀 436評論 0 0
  • 原文地址:談談我對盒模型的理解 盒子是無處不在的。 html任何一個元素都可以看作一個盒子,這個盒子不可見,但是...
    薛普定朗諤克閱讀 13,724評論 2 12
  • 課程目標 掌握盒模型相關知識點 了解IE盒模型和W3C 盒模型區別 學習建議 視頻未覆蓋的知識點會提供詳細的文檔資...
    饑人谷_江君閱讀 608評論 0 3
  • 1、盒模型包括哪些屬性 盒模型包括4個屬性:content,padding,border,margin. cont...
    _hello__world_閱讀 260評論 0 0