盒模型

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

盒模型是CSS中一個重要概念,文檔中的每個元素被描繪為矩形盒子。渲染引擎的目的就是判定大小,屬性。盒模型屬性有:

  • margin:外邊距
  • padding:內(nèi)邊距
  • border:邊框
  • content:內(nèi)容

boxmodel.png

內(nèi)容區(qū)content-area:包含元素內(nèi)容的區(qū)域,元素本身有一定的大小,占用的就是該空間大小,widthheight屬性可以調(diào)節(jié)內(nèi)容區(qū)域的寬和高。
盒模型的寬和高:margin+padding+border+width/height,
如果box-sizing:設(shè)置為border-box,則元素的width和height決定了盒模型寬高。就是說,為元素指定的任何內(nèi)邊距和邊框都將在已設(shè)定的寬度和高度內(nèi)進行繪制,通過從已設(shè)定的寬度和高度分別減去邊框和內(nèi)邊距才能得到內(nèi)容的寬度和高度。即:content-width=padding+border+content-width.
應用范圍:適用于塊級元素和inline-block元素,而行內(nèi)元素雖然在水平方向可以設(shè)置margin和padding,且垂直方向能用padding,但是不屬于盒模型的概念,如果要應用,則需要借助CSS的display屬性。
外邊距合并:當相鄰的兩個盒模型上下緊鄰的時候,會選擇margin值較大的作為外邊距,即合并兩個外邊距取大值。而左右外邊距不合并。如圖所示:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title></title>
    <style type="text/css" media="screen">
      * {
        box-sizing: border-box;        /* 以邊框作為界限,方便計算 */
      }
      .container1 {
        border: 5px solid black;
        width: 100px;
        height: 100px;
        padding: 10px;
        background-color: red;
        text-align: center;
        vertical-align: middle;
        margin: 30px;
      }
      .container2 {
        border: 5px solid black;
        width: 100px;
        height: 100px;
        padding: 10px;
        background-color: red;
        margin:40px;
      }
      .child {
        border: 1px solid white;
        width: 60px;
        height: 60px;
        background-color: #eee;
          text-align: center;
          vertical-align: middle;
          margin: 0 auto;
          display: table-cell;
      }
    </style>
  </head>
  <body>
    <div class="container1">
      <div class="child">
        <a href="#">link</a>
      </div>
    </div>
    <div class="container2">

    </div>
  </body>
</html>

效果圖:

margin上下合并.png

注意:當我給container1加一個display: inline-block屬性,則由于兩者顯示類型的不同,雖然和盒模型類似,但是margin外邊距不會合并。如圖所述:

      .container1 {
        border: 5px solid black;
        width: 100px;
        height: 100px;
        padding: 10px;
        background-color: red;
        text-align: center;
        vertical-align: middle;
        margin: 30px;
        display: inline-block; /* 加上這個屬性,margin不合并 */
      }
Paste_Image.png

參考:
盒模型 MDN
CSS3 box-sizing 屬性


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

text-align: center作用于塊級元素,使塊級元素內(nèi)部的文本或者圖片等行內(nèi)元素水平居中顯示。
eg

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title></title>
    <style type="text/css" media="screen">
    .div1 {
       text-align: center;
     }
     div,p {
       border: 1px solid silver;
     }
    </style>
  </head>
  <body>
    <div class="div1">
      啦啦啦啦啦啦啦啦
      <p>
        這是一段測試文本。
      </p>
      ![圖片](http://upload-images.jianshu.io/upload_images/2404178-6ce29190f0303ca3.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
      <div class="div2">
        <p>
          測試文本2。
        </p>
      </div>
    </div>
  </body>
</html>

效果圖:

text-align.png

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

can i use網(wǎng)站上查看。

caniuse.png

4. IE 盒模型和W3C盒模型有什么區(qū)別?

W3C盒模型&IE盒模型.gif

如圖所示,W3C盒模型的width指的是content區(qū),而IE盒模型width指的是content+padding+border。
早期的IE(5.5版本)用的是IE盒模型,而從IE6開始,只要在文檔中聲明(添加doctype)則,兼容使用W3C盒模型。
如果IE678未添加doctype,即怪異模式,那么也是用IE模型。
從IE9以后,則不用填寫聲名也用的是W3C模型。
補充
所有的盒模型,只要沒有添加doctype,都處于怪異模式,但此時,只有ie678使用ie盒模型,其他的雖然處于怪異模式,但仍舊使用標準模型,其實與普通模式效果相同,怪異模式是在ie6時代為了兼容ie5以及以前版本的瀏覽器保留的 現(xiàn)在實際使用中都使用標準模式添加doctype。

參考:
IE瀏覽器和CSS盒模型
知識點-IE 盒模型 vs 標準盒模型


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

*{
 box-sizing: border-box;
}

box-sizing:設(shè)置為border-box,則元素的width和height決定了盒模型寬高。就是說,為元素指定的任何內(nèi)邊距和邊框都將在已設(shè)定的寬度和高度內(nèi)進行繪制,通過從已設(shè)定的寬度和高度分別減去邊框和內(nèi)邊距才能得到內(nèi)容的寬度和高度。即:width=padding+border+content。
如圖所示:

<!DOCTYPE html>
<html>

<head>
    <meta charset="utf-8">
    <title></title>
    <style type="text/css" media="screen">
        * {
            box-sizing: border-box;
        }

        .container1 {
            border: 5px solid black;
            width: 100px;
            height: 100px;
            padding: 10px;
            background-color: red;
            text-align: center;
            vertical-align: middle;
            margin: 60px;
        }
    </style>
</head>

<body>
    <div class="container1">

    </div>
</body>

</html>

效果圖:

box-sizing: border-box

代碼題 JS Bin

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

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

  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標簽默認的外補...
    _Yfling閱讀 14,090評論 1 92
  • 一、盒模型包括哪些屬性? CSS盒模型~即定義了Web頁面中的元素是如何看做盒子來解析CSS盒模型屬性有: con...
    dengpan閱讀 490評論 0 0
  • CSS盒模型 在CSS中盒模型被分為兩種,第一種是W3C的標準模型,第二種是IE怪異盒模型。兩種盒子模型都包括pa...
    _空空閱讀 3,578評論 0 3
  • 一、盒模型包括哪些屬性 **1、盒模型是css中元素大小的呈現(xiàn)方式,每個元素都有盒模型。它包括元素內(nèi)容(eleme...
    鴻鵠飛天閱讀 413評論 0 0
  • 最近這段時間,天上的云都挺騷情。 夏天的雨,說來就來,說去就去。一場短暫的雷暴雨過后,沉悶過去,煩悶過去。 每天不...
    王了一一閱讀 1,230評論 36 17

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