CSS盒子模型(重點)

盒子模型(Box Model)

把HTML頁面中的佈局元素當做一個矩形盒子,也就是一個盛放內容的容器

組成部分

  • 內容
  • 邊框(border)
  • 內邊距(padding)內容與邊框的距離
  • 外邊距(margin) 盒子邊框與相鄰盒子邊框的距離

標準模型

在這裏插入圖片描述

盒子邊框(border)

語法:

border: border-width || border-style || border-color

屬性:

  • border-width :定義邊框粗細,默認單位px
  • border-style:邊框的樣式
    • none:沒有邊框
    • solid 邊框爲單實線
    • dashed邊框爲虛線
    • dotted 邊框爲點線
  • border-color:邊框顏色

示例

div {
	width:500px;
	height:500px;
	/*邊框寬度*/
	border-width: 5px;
	/*邊框實線*/
	border-style:solid;
	/*邊框顏色*/
	border-color: red;
	/*簡寫*/
	/*邊框粗細 邊框樣式 邊框顏色*/
	border: 5px solid red;
}

盒子邊框單獨指定樣式

上邊框 下邊框 左邊框 右邊框
border-top-style:樣式; border-bottom-style:樣式; border-left-style:樣式; border-right-style:樣式;
border-top-width:寬度; border- bottom-width:寬度; border-left-width:寬度; border-right-width:寬度;
border-top-color:顏色; border- bottom-color:顏色; border-left-color:顏色; border-right-color:顏色;
border-top:寬度 樣式 顏色; border-bottom:寬度 樣式 顏色; border-left:寬度 樣式 顏色; border-right:寬度 樣式 顏色;

表格的細線邊框

屬性:
border-collapse:collapse
示例:

th,
td,
table {
	/*會發現表格邊框是2px*/
	border: 1px solid red;
	/*合併相鄰邊框*/
	border-collapse:collapse;
}

內邊距(padding)

邊框與內容的距離

屬性:

屬性 作用
padding-left 左內邊距
padding-right 右內邊距
padding-top 上內邊距
padding-bottom 下內邊距

簡寫

padding: 10px 上下左右都爲10px
padding: 10px 20px 上下 10px 左右20px
padding:10px 20px 30px 上 10px 左右20px 下30px
padding:10px 20px 30px 40px 上 10px 右20px 下30px 左40px (順時針)
記憶方法:先分上下,再分左右

注意:

添加內邊距之後,盒子邊距會變大

內盒尺寸計算

盒子高度=內邊距上下寬度+內容高度+邊框寬度
盒子寬度=內邊距左右寬度+內容高度+邊框寬度

pandding不影響盒子大小的情況

div {
	width:100px;
	height:100px;
	background-color:red;
}
p {
	height:30px;
	background-color:orange;
	padding-left:30px;
}
<html>
	<body>	
		<div>
			<p> AAA</p>
		</div>
	</body>
</html>

效果
在這裏插入圖片描述
盒子模型
在這裏插入圖片描述
結論
如果盒子沒有指定寬度,則不會被撐開

外邊距(margin)

盒子與相鄰盒子的距離
屬性
與內邊距相似,將padding替換爲margin
簡寫
與內邊距相同,上右下左

實現盒子居中對齊

	div {
		/*必須要有寬度*/
		width:300px;	
		/*讓塊級盒子居中對齊水平,左右外邊距設置爲auto*/
		margin: 0 auto;
		/*其他寫法*/
		margin :auto;
		/*其他寫法*/
		margin-left:auto;
		margin-right:auto;
	}

文字居中與盒子居中

 p{
 /*文本內容、行內元素、行內塊元素*/
	text-algin:center;
	}
div {
/*塊元素居中*/
	margin:0 auto;
}

插入圖片與背景圖片區別

  • 插入圖片:常用,一般做產品展示類
    • 移動位置只能靠盒子模型 padding margin
  • 背景圖片:一般用作小圖標或者超大圖片
    • 移動位置通過 background-position

示例

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        .pic,
        .bg{
            width: 2000px;
            height: 1000px;
            background-color: aquamarine;
        }
        .pic img {
            margin: 200px;
        }

        .bg {
            /*padding: 200px;*/
            background-image: url(img/background.jpeg);
            background-repeat: no-repeat;
            background-position: 100px 100px;
        }
    </style>
</head>
<body>
    <div class="pic">
        <img src="img/background.jpeg" alt="">
    </div>
    <div class="bg"></div>

</body>
</html>

清楚默認內外邊距

爲了更靈活方便地控制網頁中的元素,製作網頁時,我們需要將元素的默認內外邊距清除

代碼

* {
   padding:0;         /* 清除內邊距 */
   margin:0;          /* 清除外邊距 */
}

行內元素爲了照顧兼容性, 儘量只設置左右內外邊距, 不要設置上下內外邊距。

外邊距合併

相鄰塊元素垂直外邊距的合併

  • 當上下相鄰的兩個塊元素相遇時,如果上面的元素有下外邊距margin-bottom
  • 下面的元素有上外邊距margin-top,則他們之間的垂直間距不是margin-bottom與margin-top之和
  • 取兩個值中的較大者這種現象被稱爲相鄰塊元素垂直外邊距的合併(也稱外邊距塌陷)。

解決方案:儘量給只給一個盒子添加margin值

嵌套塊元素垂直外邊距的合併(塌陷)

  • 對於兩個嵌套關係的塊元素,如果父元素沒有上內邊距及邊框
  • 父元素的上外邊距會與子元素的上外邊距發生合併
  • 合併後的外邊距爲兩者中的較大者

解決方案:

  1. 可以爲父元素定義上邊框。
  2. 可以爲父元素定義上內邊距
  3. 可以爲父元素添加overflow:hidden。

盒子模型佈局穩定性

width 、 padding 、margin
穩定性: width > padding > margin
原因:

  • margin會有合併的問題
  • padding會撐大盒子,需要計算盒子數據

相關推薦:
學習html看這個就夠了
學習CSS看這個就夠了(一)
學習CSS看這個就夠了(二)


在這裏插入圖片描述

本文參考尚硅谷前端學習課程

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章