1. 程式人生 > 其它 >css內外邊距

css內外邊距

外邊距和內邊距

  • margin: 用於控制元素與元素之間的距離;margin的最基本用途就是控制元素周圍空間的間隔,從視覺角度上達到相互隔開的目的。
  • padding: 用於控制內容與邊框之間的距離;
  • Border(邊框) 圍繞在內邊距和內容外的邊框。
  • Content(內容) 盒子的內容,顯示文字和影象。

元素的寬度和高度:

重要:當您指定一個CSS元素的寬度和高度屬性時,你只是設定內容區域的寬度和高度。要知道,完全大小的元素,你還必須新增填充,邊框和邊距。

'''
margin:10px 5px 15px 20px;-----------上 右 下 左
margin:10px 5px 15px;----------------上 右左 下
margin:10px 5px;---------------------上下  右左
margin:10px;    ---------------------上右下左
'''

下面的例子中的元素的總寬度為300px:

'''
width:250px;
padding:10px;
border:5px solid gray;
margin:10px; 
'''

思考1:

邊框在預設情況下會定位於瀏覽器視窗的左上角,但是並沒有緊貼著瀏覽器的視窗的邊框,這是因為body本身也是一個盒子(外層還有html),在預設情況下, body距離html會有若干畫素的margin,具體數值因各個瀏覽器不盡相同,所以body中的盒子不會緊貼瀏覽器視窗的邊框了,為了驗證這一點,加上:

body{
    border: 1px solid;
    background-color
: cadetblue; }

>>>>解決方法:

body{
    margin: 0;
}

思考2:

margin collapse(邊界塌陷或者說邊界重疊)

外邊距的重疊只產生在普通流文件的上下外邊距之間,這個看起來有點奇怪的規則,其實有其現實意義。設想,當我們上下排列一系列規則的塊級元素(如段 落P)時,那麼塊元素之間因為外邊距重疊的存在,段落之間就不會產生雙倍的距離。

1兄弟div:上面div的margin-bottom和下面div的margin-top會塌陷,也就是會取上下兩者margin裡最大值作為顯示值

2父子div

如果父級div中沒有 border,padding,inline content,子級div的margin會一直向上找,直到找到某個標籤包括border,padding,inline content中的其中一個,然後按此div 進行margin;

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta class="keywords" content="css的內外邊距">
    <meta class="description" content="study">
    <meta http-equiv="Refresh" content="1800;https://www.baidu.com">
    <meta http-equiv="x-ua-compatible" content="IE=EmulateIE7">
    <title>標題</title>
    <link rel="stylesheet" href="day111.css">
    <link rel="icon" href="https://www.baidu.com/favicon.ico">
    <!--<script src="js.js"></script>-->
</head>

<body>
    <div class="div1">hello div1</div>

    <div class="div2">hello div2</div>

    <div class="div3">hello div3</div>

    <div class="div4">
        <!--content-->
        <div class="div5">111111</div>
        <div class="div6">222222</div>
    </div>
</body>
</html>
.div1{
    width: 200px;
    height: 200px;
    background-color: lightpink;
    border: 20px solid red;
    /*邊框粗細20px*/
    padding: 20px;
    /*padding是上下左右內邊距都為20px,內邊距是從文字開始算起*/
    margin-bottom: 20px;
    /*下外邊距20px*/

    /*margin: 20px;*/
    /*簡寫上/右/下/左外邊距20px*/
    /*margin: 10px 20px 30px 40px;*/
    /*分別代表上/右/下/左外邊距*/
    /*margin: 10px 20px 30px;*/
    /*分別代表上/右左/下外邊距*/
    /*margin: 10px 20px;*/
    /*分別代表上下/左右外邊距*/
}

.div2{
    width: 200px;
    height: 200px;
    background-color: deepskyblue;
    border: 20px solid green;
    padding: 10px;
    margin-left: 20px;
    /*左外邊距20px*/
    margin-top: 30px;
    /*上外邊距30px,div2和div1是兄弟div,那麼上下外邊距會有邊界塌陷,取上下兩者最大值作為顯示,即div1和div2上下間距為30px,並不是50px*/
}

body{
    border: 2px solid black;
    margin: 0px;
    /*body標籤與瀏覽器有預設外邊距,可自行取消*/
}


.div3{
    width: 200px;
    height: 200px;
    background-color: blueviolet;
}

.div4{
    width: 500px;
    height: 500px;
    background-color: mediumspringgreen;
    /*border: 1px solid red;/*/
    /*不能為0px*/
    /*padding: 1px;*/
    /*不能為0px*/
}

.div5{
    width: 100px;
    height: 100px;
    background-color: orangered;
    margin-top: 30px;
    /*div4標籤沒有border/padding/inline content(文字內容),那麼div5的margin會往上找,要麼碰到div3(和div4是兄弟div)進行margin,要麼碰到div4的父級及往上的父級(body是div4父級)有border/padding/inline content再進行margin*/
}

.div6{
    width: 100px;
    height: 100px;
    background-color: aquamarine;
}