1. 程式人生 > >HTML+CSS基礎知識個人筆記_5

HTML+CSS基礎知識個人筆記_5

HTML+CSS基礎知識個人筆記_5

1.盒子小知識點

1.1盒子水平居中

通過margin的auto來設定。
注意理解auto的作用效果。

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>01_盒子水平居中.html</title>
	<style>
	div {
		width: 300px;
		height: 300px;
		background-color: pink;
		/*盒子裡面的內容(文字 行內元素 行內塊)水平居中*/
		text-align: center;
		line-height: 300px;
		/*盒子水平居中
		1.盒子必須是塊級元素
		2.必須指定寬度*/

		/*auto理解*/
		/*auto表示自動充滿*/
		/*margin-left: auto;     左邊自動充滿*/
		/*margin:-right: auto;     右邊自動充滿*/
		/*margin-top      margin-bottom     用auto沒有意義
		因為,盒子垂直沒有居中*/

		/*盒子水平居中關鍵是,左右auto*/
		/*通俗寫法*/
		/*margin: 0 auto;*/
		/*寫法二:不寫上下,減少渲染*/
		/*margin-left: auto;
		margin-right: auto;*/
		/*寫法三:全部auto*/
		/*margin: auto;*/
	}
	</style>
</head>
<body>
	<div>123</div>
</body>
</html>

1.2 外邊距合併

僅針對垂直!水平沒有關係
在這裡插入圖片描述
時刻要有這樣的圖在腦海中。
在兩個相鄰盒子間,margin大的有效。

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>02_外邊距合併.html</title>
	<style>
	div {
		width: 200px;
		height: 200px;
		background-color: pink;
	}

	/*外邊距合併,瀏覽器BUG,兩個盒子的外邊距,以其中大的為準*/
	.father {
		margin-bottom: 200px;
	}
	.son {
		background-color: purple;
		margin-top: 100px;
	}

	/*速度慢!
	* {
		margin: 0;
		padding: 0;
	}
	寫成p, td, li {
		......
	}
	列出要清零的目標,雖然寫起來繁瑣,但是效能優化*/
	</style>
</head>
<body>
	<div class="father"></div>
	<div class="son"></div>
</body>
</html>

1.3 外邊距塌陷

屬於外邊距合併
僅針對垂直!水平沒有關係
內嵌盒子,當父元素沒有padding和border的時候,在垂直方向上,父元素的外邊距和子元素的外邊距會發生外邊距合併,
合併後的外邊距為兩者中較大值,即使父元素外邊距為零,也會合並
不單是父級,後代關係也可能發生
解決思路: 不讓內嵌元素的外邊距和父級外邊距直接接觸

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>03_外邊距塌陷.html</title>
	<style>

	/*巢狀塊元素的垂直外邊距合併
	當父元素沒有padding和border的時候,在垂直方向上,父元素的外邊距和子元素的外邊距會發生外邊距合併,
	合併後的外邊距為兩者中較大值,即使父元素外邊距為零,也會合並
	不單是父級,後代關係也可能發生*/

	/*解決思路:不讓內嵌元素的外邊距和父級外邊距直接接觸
	由此:
	1.在父級元素加border,顏色可以transparent 或者 和周圍一致,會撐開盒子
	CSS1 background
	CSS2 +border
	CSS3 OK
	https://www.css88.com/book/css/values/color/transparent.htm
	2.在父級元素加padding,會撐開盒子
	3.外層元素overflow:hidden;------>推薦!不用調寬高!!!*/
	.father {
		width: 300px;
		height: 300px;
		background-color: pink;
		/*border:1px solid transparent;*/
		/*border:1px solid pink;*/
		overflow: hidden;
		/*padding-top: 50px;*/
		margin-top: 20px;
	}
	.son {
		width: 100px;
		height: 100px;
		background-color: purple;
		margin-top: 10px;	
	}
	</style>
</head>
<body>
	<div class="father">
		<div class="son"></div>
	</div>
</body>
</html>

1.4 盒子預設寬度

子盒子在沒有指定寬高的時候,寬度預設是父盒子的寬度。
Element 空間大小 = content + padding + border + margin
Element 實際大小 = content + padding + border
注意:子盒子可以超出父盒子,不要理解錯誤,父盒子本身的padding和border會撐開本身。

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>04_盒子預設寬度</title>
	<style>
	.father {
		width: 200px;
		height: 200px;
		background-color: pink;
		/*padding: 20px;*/
	}
	/*Element 空間大小 = content + padding + border + margin*/
	/*Element 實際大小 = content + padding + border*/
	/*.son沒有給寬高,所以padding不會撐開盒子,預設寬度是.father的*/
	/*注意!!!當.son也有寬或者高,padding會撐開.son的盒子,不會撐開大盒子!!!!!!*/
	.son {
		/*height: 2000px;*/
		/*width: 300px;*/
		padding: 20px;
	}
	</style>
</head>
<body>
	<div class="father">
		<div class="son">123</div>
	</div>
</body>
</html>

1.5 圓角盒子

針對方形:border-radius: 50%;
為圓形

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>05_圓角盒子.html</title>
	<style>
	body {
		background-color: #ccc;
	}
	.nav {
		border: 1px solid green;
		text-align: center;
	}
	.nav a {
		display: inline-block;
		width: 200px;
		height: 200px;
		background-color: #fff;
		/*也可以寫,100px,但是要是寬高改變,就得重新計算,麻煩!*/
		border-radius: 50%;
		margin: 0 50px;
		text-decoration: none;
		line-height: 200px;
		color: red;
		font-size: 20px;
	}
	.nav a:hover {
		background-color: red;
		color: white;
	}
	</style>
</head>
<body>
	<div class="nav">
		<a href="#">ABC</a>
		<a href="#">ABC</a>
		<a href="#">ABC</a>
		<a href="#">ABC</a>
	</div>
</body>
</html>

1.6 盒子陰影

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>06_盒子陰影.html</title>
	<style>
	div {
		width: 200px;
		height: 200px;
		/*水平陰影h-shadow(必填)   垂直陰影v-shadow(必填)   模糊距離blur   陰影尺寸spread   陰影顏色color   inset將外部陰影(outset)改為內部陰影*/
		box-shadow: 0 15px 30px rgba(0, 0, 0, .1);
	}
	</style>
</head>
<body>
	<div></div>
</body>
</html>

2. 盒子浮動

浮動,就是為了讓多個塊級元素可以在一行上顯示

2.1 盒子浮動與標準流父級搭配

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>08_盒子浮動與標準流父級搭配.html</title>
	<style>
	/*
	----- -----
	|   |   |   |
	----- -----
	------------
	|             |
	------------
	有標準流的父級塊級元素阻擋,能出以上效果
	*/
	.father {
		width: 200px;
		height: 100px;
		border: 1px solid transparent;
	}
	.son1,
	.son2 {
		width: 100px;
		height: 100px;
		background-color: pink;
		float: left;
	}
	.son2 {
		background-color: orange;
	}
	.down {
		width: 202px;
		height: 100px;
		background-color: red;
	}
	</style>
</head>
<body>
	<div class="father">
		<div class="son1"></div>
		<div class="son2"></div>
	</div>
	<div class="down"></div>
</body>
</html> 

2.2 浮動的隱藏模式轉換

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>09_浮動的隱藏模式轉換.html</title>
	<style>
	div {
		width: 300px;
		height: 300px;
		background-color: pink;
		float: left;
	}
	span {
		width: 100px;
		height: 100px;
		background-color: green;
		/*元素浮動後,會具有行內塊的特性*/
		float: left;      /*如果給行內元素停駕了float,則不用轉換模式了*/
	}
	</style>
</head>
<body>
	<div>abc</div>
	<span>123</span>
</body>
</html>

2.3 盒子浮動的注意點

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>09_盒子浮動的注意點.html</title>
	<style>
	.father {
		width: 300px;
		height: 300px;
		background-color: red;
		/*1.盒子浮動算作內容,不會超過padding 和 border*/
		padding: 50px;
		/*2.要理解浮動的作用,會如何排列,對齊*/
		/*3.知曉浮動的隱藏模式轉換*/
	}
	.son {
		width: 100px;
		height: 100px;
		background-color: pink;
		float: right;
	}
	</style>
</head>
<body>
	<div class="father">
		<div class="son"></div>
	</div>
</body>
</html>

HOME