CSS盒模型屬性詳細介紹


 一、概述

  CSS盒模型是定義元素周圍的間隔、尺寸、外邊距、邊框以及文本內容和邊框之間內邊距的一組屬性的集合。

  示例代碼:

  

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>Document</title>
 6     <style type="text/css">
 7         *{margin: 0;padding: 0;}
 8         
 9         .boxWrapper{
10             width: 150px;
11             height: 150px;
12             background: #ccc;
13             margin: 20px 20px 20px 20px;
14             padding: 20px 20px 20px 20px;
15             border: 20px solid #00f;
16         }
17         .boxInner{
18             width: 100px;
19             height: 100px;
20             border: 10px solid #000;
21         }
22     </style>
23 </head>
24 <body>
25     <div class="boxWrapper">
26         <div class="boxInner"></div>
27     </div>
28 </body>
29 </html>

 

  效果圖:

  

 

 

 

   由此可見:外邊距margin是不可見的,如果設置了父元素的背景,就可以看到;背景色在邊框區域設置一個不同的背景,就可以看到內邊距(padding)區域。並且盒模型是由margin(外邊界)+border(邊框)+padding(內邊距)+content(內容)構成的。

  下面,我們來介紹CSS盒模型的這些屬性:

二、屬性介紹

  1.   margin屬性

    概念:margin屬性應用於盒子外面的空間,或者是位於盒子與文檔中其他元素之間的區域,或者是盒子與瀏覽器窗口之間的區域。margin長在盒子外圍的,不會對盒子本身的大小造成影響。

    屬性:margin-top(上外邊界)、margin-right(右外邊界)、margin-bottom(下外邊界)、margin-left(左外邊界)

    值:支持length、百分比、auto

    用法:

    margin設置方法:
    1: margin:10px 四周(上,右,下,左)
    2: margin:10px 20px 上下 左右
    3: margin:10px 20px 30px 上 左右 下
    4:margin:10px 20px 30px 40px 上右下左
    5:margin支持負值!!
    6:讓子元素在父元素里面左右居中:margin:0 auto;

    7:margin常見的bug:

  •       a:當父元素和子元素都沒有浮動的情況下:給第一個子元素添加margin-top:會錯誤的把margin值加在父元素上面
      實例代碼:

        

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>Document</title>
 6     <style type="text/css">
 7         *{margin: 0;padding: 0;}
 8         
 9         .boxWrapper{
10             width: 150px;
11             height: 150px;
12             background: #ccc;
13         }
14         .boxInner{
15             width: 100px;
16             height: 100px;
17             margin-top: 20px;
18             background: skyblue;
19         }
20         .other{
21             width: 50px;
22             height: 50px;
23             background: #999;
24             /* margin-top: 20px; */
25         }
26     </style>
27 </head>
28 <body>
29     <div class="boxWrapper">
30         <div class="boxInner"></div>
31         <div class="other"></div>
32     </div>
33 </body>
34 </html>
      效果如圖:

      

 

 

    結論:當父元素里的第一個子元素(塊元素),添加margin-top的時候,會錯誤的把margin-top的值添加給父元素(建立在當前的元素們,沒有添加邊框和浮動的前提下)

    解決方法: 

  1.     bfc 給父元素添加overflow:hidden;推薦使用
  2.     給父元素和子元素添加浮動屬性;
  3.     可以給父元素添加邊框
  4.     把margin改為padding

 

 

  •       b:相鄰兩個元素上下margin會重疊,按照較大的值設置。
        示例代碼:

        

 1         .boxInner{
 2             width: 100px;
 3             height: 100px;
 4             margin-bottom: 20px;
 5             background: skyblue;
 6         }
 7         .other{
 8             width: 50px;
 9             height: 50px;
10             background: #999;
11             margin-top: 20px;
12         }
13     </style>
14 </head>
15 <body>
16     <div class="boxWrapper">
17         <div class="boxInner"></div>
18         <div class="other"></div>
19     </div>
20 </body>
21 </html>
    效果圖:

    

 

 

     可以看出外邊距折疊。當boxInner的下外邊距和other元素的上外邊距接觸時,外邊距發生了折疊!,他們之間只有20px,而不是40px;

    2.邊框

      1.border屬性:用來控制盒邊框的寬度,樣式,顏色。

      屬性(不支持百分比)常用px

      border:10px solid red;

      border-width:10px;
      border-style:solid;
      border-color:red;


        1:線性: solid(實線) dashed(虛線) dotted(點狀線) double(雙線) none/0(沒有邊框)

        2:給單一一個方向添加邊框:
        border-left/right/top/bottom:10px solid yellow;


        3:邊框設置方法;
        border:solid red;
        border-width:;
        一個值:四周
        兩個值:上下 左右
        三個值:上 左右 下
        四個值:上右下左

        4:transparent; 代替顏色值 為 透明

    3.padding屬性:內邊距是元素的內容和邊框之間的區域

      用法:

      1:padding是添加在父元素(盒子)上的
      2:padding 調整子元素在父元素里面的位置關系
      3:padding會把盒子撐大。
      4:想讓盒子保持原有的大小:在寬高的基礎上減掉padding值。
      5:給單一一個方向添加padding值: padding-top/bottom/left/right:
      6:
      padding設置方法:
      padding:10px 四周
      padding:10px 20px 上下 左右
      padding:10px 20px 30px 上 左右 下
      padding:10px 20px 30px 40px 上右下左

      7:padding不會對背景圖造成影響
      8:padding的值不能為負值!!!

   4.對比padding和margin

     1.padding區域是邊框內邊緣和內容外邊緣之間的區域。

     2.auto關鍵字對padding屬性不起作用。

     3.padding屬性不可以接受復制。

     4.padding不存在內邊距折疊,只有外邊距折疊。

 


免責聲明!

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



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