CSS-8.1-CSS盒模型

盒模型
盒模型(Box Model)表示了頁面中的一個元素在頁面中佔有的位置,主要在網頁的設計和佈局時使用

CSS盒模型
1.盒模型概述
2.margin:外邊距
3.border:邊框
4.padding:內邊距

一:盒模型概述

  • CSS盒模型主要用來設計和佈局
  • HTML文檔中每個元素都可以看作一個盒子
  • 盒模型規定了這個盒子中
    • content:元素內容
    • padding:內邊距
    • border:邊框
    • margin:外邊距

CSS中設置box-sizing屬性來規定使用哪種模型
1.content-box:採用標準模式解析計算,默認模式
2.border-box:採用怪異模式解析計算

1、標準盒模型

  • 標準盒模型也稱爲W3C盒模型
    • 大部分瀏覽器默認採用標準盒模型
  • 一個元素所佔據的總寬度/高度
    • widtn
    • padding(左右/上下)
    • border(左右/上下)
    • margin(左右/上下)
      在這裏插入圖片描述

2、IE盒模型

  • IE盒模型也稱爲怪異盒模型
    • IE6之前的瀏覽器默認採用怪異盒模型
  • 一個元素所佔寬度
    • width(width已經包含了padding和border)
    • margin(左右)
      在這裏插入圖片描述
<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>CSS盒模型</title>
	<style type="text/css">
		div{
			width: 200px;
			height: 200px;
			border: 5px solid #0f0;
			padding: 20px;
			margin: 10px;
			line-height: 200px;
			text-align: center;
		}
		.div1{
			/* 設置爲IE盒模型 */
			box-sizing: border-box;
			background-color: #f00;
		}
		/* 默認爲標準盒模型 */
		.div2{
			background-color: #00f;
		}
	</style>
</head>
<body>
	<div class="div1">IE盒模型</div>
	<div class="div2">標準盒模型</div>
</body>
</html>

效果動態圖
在這裏插入圖片描述

結論
1.標準盒模型設置的寬度只包含內容區域
2.IE盒模型設置的寬度包含了內容區域+padding+border

二:margin:外邊距

margin:外邊距
1.外邊距的屬性
2.多個盒子之間的外邊距影響

1、外邊距的屬性

  • 圍繞在元素周圍的空白區域就是外邊距,外邊距是透明的,依次不會遮擋其後面的元素
  • 屬性
    • margin-top:上
      • 位的數值(像素,釐米等)
      • 百分比
      • auto
    • margin-right:右
      • 位的數值(像素,釐米等)
      • 百分比
      • auto
    • margin-bottom:下
      • 位的數值(像素,釐米等)
      • 百分比
      • auto
    • margin-left:左
      • 位的數值(像素,釐米等)
      • 百分比
      • auto

簡寫margin屬性的四種方法
1.寫一個數值:上、下、左、右四個方向數值相等
2.寫兩個數值:第一個數等於上下外邊距,第二個數等於左右外邊距
3.寫三個數值:上、右、下邊距,左邊默認等於右邊
4.寫四個數值:上、右、下、左4個方向的邊距

注意
當設置 margin:0 auto 時,代表塊級盒子在父容器中水平居中

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>margin外邊距</title>
	<style type="text/css">
		.div1{
			width: 200px;
			height: 200px;
			background-color: #0f0;
			text-align: center;
			/* 設置父盒子的外邊距 
			上,右,下(左等於右)*/
			margin: 100px 50px 150px;
		}
		.div2{
			width: 100px;
			height: 100px;
			background-color: #00f;
			text-align: center;
			color: white;
			/* 設置子盒子在父盒子中水平居中 */
			margin:0 auto;
		}
	</style>
</head>
<body>
	<div class="div1">
		父盒子
		<div class="div2">
			子盒子
		</div>
	</div>
</body>
</html>

效果動態圖
在這裏插入圖片描述

2、多個盒子之間的外邊距影響

(1)行內盒子水平排放的外邊距

  • 水平排放的盒子,水平間距是 margin 的累加

(2)塊級盒子垂直排放的外邊距

  • 垂直排放的盒子,垂直間距是合併的(取最大值)

(3)父、子盒子的垂直外邊距合併

  • 在給子盒子添加上外邊距後,父、子盒子同時下移
    • 說明父、子盒子的外邊距合併了
    • 爲子盒子添加上外邊距也就是爲父盒子添加上了外邊距
<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
	<style type="text/css">
		.div1{
			height: 200px;
			width: 200px;
			background-color: #0f0;
			/* 水平居中 */
            margin: 0 auto;
			overflow: hidden;
		}
		.div2{
			height: 100px;
			width: 100px;
			background-color: #00f;
			margin: 30px 0px 0px 0px;
		}
	</style>
</head>
<body>
	<div class="div1">
		<div class="div2">
			子盒子
		</div>
	</div>
</body>
</html>

清除前
在這裏插入圖片描述

清除後
在這裏插入圖片描述

三種解決爲子盒子添加上外邊距後,父盒子也隨之移動的方法
1.父盒子添加 overflow:hidden
2.父盒子添加 padding
3.父盒子添加 border

三:border:邊框

  • 元素的邊框是圍繞在元素內邊距外的一條或多條線
  • 通過CSS可以規定元素邊框的樣式、寬度和顏色

border:邊框
1.border-style
2.border-width
3.border-color
4.邊框的添加方式

1、border-style

  • 用於爲元素設置邊框的樣式
  • 可以單獨設置一個邊框,也可以設置所有邊框

單獨設置一個邊框
1.border-top-style:僅設置上邊框
2.border-right-style:僅設置右邊框
3.border-bottom-style:僅設置下邊框
4.border-left-style:僅設置左邊框

border-style設置所有邊框
1.none:無邊框
2.hidden:隱藏,與none相同
3.dotted:設置爲點狀邊框
4.dashed:設置爲虛線邊框
5.solid:設置爲實線邊框
6.double:設置爲雙線邊框,雙線的寬度等於border-width的值

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>邊框樣式</title>
	<style type="text/css">
		div{
			width: 200px;
			height: 200px;
            /* 點狀邊框,虛線邊框,實線邊框,雙線邊框 */
			border-style:dotted dashed solid double;
		}
	</style>
</head>
<body>
	<div></div>
</body>
</html>

效果圖
在這裏插入圖片描述

border-style設置所有邊框時,可以寫1~4個值
1.寫一個值時:設置四個邊框爲統一樣式
2.寫兩個值時:第一個值設置上下邊框,第二個值設置左右邊框
3.寫三個值時:第一個值設置上邊框,第二個值設置左右邊框,第三個值設置下邊框
4.寫四個值時:依次設置上、右、下、左四個邊框

2、border-width

  • 用於爲元素的邊框設置寬度
  • 可以單獨設置一個邊框寬度,也可以設置所有邊框的寬度

單獨設置一個邊框寬度
1.border-top-width:僅設置上邊框寬度
2.border-right-width:僅設置右邊框寬度
3.border-bottom-width:僅設置下邊框寬度
4.border-left-width:僅設置左邊框寬度

border-width置所有邊框寬度
1.thin:設置爲細邊框
2.medium:默認,設置爲中等邊框
3.thick:設置爲粗邊框
4.length:使用帶單位的數值或自定義邊框寬度,不可設置爲負值

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>邊框寬度</title>
	<style type="text/css">
		div{
			width: 200px;
			height: 200px;
			border-style: dotted dashed solid double;
			/* 細邊框,中等邊框,粗邊框,15px邊框 */
			border-width:thin medium thick 15px;
		}
	</style>
</head>
<body>
	<div></div>
</body>
</html>

效果圖
在這裏插入圖片描述

border-width設置所有邊框時,可以寫1~4個值
1.寫一個值時:設置四個邊框爲統一寬度
2.寫兩個值時:第一個值設置上下邊框寬度,第二個值設置左右邊框寬度
3.寫三個值時:第一個值設置上邊框寬度,第二個值設置左右邊框寬度,第三個值設置下邊框寬度
4.寫四個值時:依次設置上、右、下、左四個邊框寬度

3、border-color

  • 設置四條邊框的顏色
  • 可以單獨設置一個邊框顏色,也可以設置所有邊框的顏色

單獨設置一個邊框顏色
1.border-top-color:僅設置上邊框顏色
2.border-right-color:僅設置右邊框顏色
3.border-bottom-color:僅設置下邊框顏色
4.border-left-color:僅設置左邊框顏色

border-color設置所有邊框的顏色
1.red
2.rgb(255,0,0)
3.#f00

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>邊框顏色</title>
	<style type="text/css">
		div{
			width: 200px;
			height: 200px;
			border-style: dotted dashed solid double;
			border-color: red rgb(0,255,0) #00f;
		}
	</style>
</head>
<body>
	<div></div>
</body>
</html>

效果圖
在這裏插入圖片描述

border-color設置所有邊框時,可以寫1~4個值
1.寫一個值時:設置四個邊框爲統一顏色
2.寫兩個值時:第一個值設置上下邊框寬度,第二個值設置左右邊框顏色
3.寫三個值時:第一個值設置上邊框寬度,第二個值設置左右邊框寬度,第三個值設置下邊框顏色
4.寫四個值時:依次設置上、右、下、左四個邊框顏色

4、邊框的添加方式

邊框的添加方式
1.三個屬性分別設置
2.使用 border 屬性

(1)三個屬性分別設置

  • border-style
  • border-width
  • border-color
/* 基本語法 */
<style type="text/css">
	/* 三個屬性分別設置 */
	div{
		width: 200px;
		height: 200px;
		border-style: solid;
		border-width: 5px;
		border-color: #f00;
	}
</style>

(2)使用 border 屬性

  • border:style width color
  • 三個屬性沒有前後順序
/* 基本語法 */
<style type="text/css">
	/* 使用 border 屬性 */
	div{
		width: 200px;
		height: 200px;
		border: 5px dotted #00f;
	}
</style>

四:padding:內邊距

  • 內邊距規定元素邊框與元素內容之間的區域,也稱爲填充
  • 內邊距會使盒模型的整個可視區域變大,使用時需注意盒模型實際顯示大小
  • 可以單獨設置一個內邊距,也可以設置四個內邊距

單獨設置一個內邊距
1.padding-top:僅設置上內邊距
2.padding-right:僅設置右內邊距
3.padding-bottom:僅設置下內邊距
4.padding-left:僅設置左內邊距

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>padding 內邊距</title>
	<style type="text/css">
		div{
			width: 100px;
			height: 100px;
			line-height: 100px;
			text-align: center;
		}
		/* 添加padding後,實際所佔區域被撐大 */
		.div1{
			background-color: #0f0;
			padding:20px;
		}
		.div2{
			background-color: #00f;
			color: white;
		}
	</style>
</head>
<body>
	<div class="div1">設置 padding</div>
	<div class="div2">未設 padding</div>
</body>
</html>

效果圖
在這裏插入圖片描述

padding 設置內容與邊框之間的填充區域,可以寫1~4個值
1.padding:25px; 四個邊都是25px
2.padding:25px 50px; 上下25px,左右50px
3.padding:25px 50px 30px; 上25px,左右50px,下30px
4.padding:25px 50px 30px 60px; 上25px,右50px,下30px,左60px

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