本部落格為狂神說在B站視訊的筆記(如有侵權請告知我,我會立刻删除本部落格)
狂神說
CSS
1. CSS的優勢
- 内容和表現的分離
- 網頁結構表現統一,可以實作複用
- 樣式十分的豐富
- 利用SEO,容易被搜尋引擎收錄
2. 導入方式
- 行内樣式
- 内部樣式
- 外部樣式
優先級:就進原則
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>導入方式</title>
<!-- 内部樣式 -->
<style>
h1 {
color: green;
}
</style>
<!-- 外部樣式 -->
<link rel="stylesheet" href="css/style.css">
</head>
<body>
<!-- 行内樣式:在标簽元素中,編寫一個style屬性,編寫樣式即可 -->
<h1 style="color: red">我是标題</h1>
</body>
</html>
/*外部樣式*/
h1 {
color: hotpink;
}
拓展:外部樣式的兩種寫法
- 連結式
<!-- 外部樣式 --> <link rel="stylesheet" href="css/style.css">
- 導入式
<!-- 導入式 --> <style> @import url("css/style.css"); </style>
3. 選擇器
作用:選擇頁面上的某一個或者某一類元素
3.1 基本選擇器
- 标簽選擇器
- 選擇到頁面上**所有**的這個标簽的元素
- 類選擇器
- 格式:.class名稱 {}
- 可以多個标簽同屬于一個class
- id選擇器
- 格式:#id名稱 {}
- id必須保證全局唯一
- 優先級
- id選擇器 > class選擇器 > 标簽選擇器
3.2 層次選擇器
- 後代選擇器
- 該标簽後面的所有
/* 後代選擇器 */ body p { background-color: red; }
- 子選擇器
- 該标簽後面的一個
/* 子選擇器 */ body>p { background-color: hotpink; }

- 相鄰兄弟選擇器
- 目前選中标簽後面的一個同類,相鄰(對下,不對上)
/* 相鄰兄弟選擇器 */ .active + p { background-color: yellowgreen; }
- 通用兄弟選擇器
- 目前選中标簽的向下的所有兄弟标簽
/* 通用選擇器 */ .active ~ p { background-color: lightgreen; }
- html代碼:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>層次選擇器</title> <style> /* 後代選擇器 */ body p { background-color: red; } /* 子選擇器 */ body>p { background-color: hotpink; } /* 相鄰兄弟選擇器 */ .active + p { background-color: yellowgreen; } /* 通用選擇器 */ .active ~ p { background-color: lightgreen; } </style> </head> <body> <p>p1</p> <p class="active">p2</p> <p>p3</p> <p>p3.5</p> <ul> <li> <p>p4</p> </li> <li> <p>p5</p> </li> <li> <p>p6</p> </li> </ul> <p>p7</p> <p class="active">p8</p> <p>p9</p> <p>p10</p> </body> </html>
3.3 結構僞類選擇器
僞類:相當于條件判斷
/* ul的第一個子元素 */
ul li:first-child {
background-color: #02ff00;
}
/* ul的最後一個子元素 */
ul li:last-child {
background-color: #ff4832;
}
/* 選中p1:定位到父元素,選擇目前的第一個元素
選擇目前p元素的父級元素,選中父級元素的第一個,并且是目前元素才生效!
例子中夾雜了一個h1标簽,故效果無法出現*/
p:nth-child(1) {
background-color: #2700ff;
}
/* 選中父元素,下的p元素的第二個,按類型選擇 */
p:nth-of-type(2) {
background-color: yellow;
}
<!-- <h1>h1</h1> -->
<p>p1</p>
<p>p2</p>
<p>p3</p>
<ul>
<li></li>
<li></li>
<li></li>
</ul>
3.4 屬性選擇器(常用)
相當于:id + class 的結合
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>屬性選擇器</title>
<style>
.demo a {
float: left;
/* 讓個部分成為一個單獨的塊 */
display: block;
height: 50px;
width: 50px;
border-radius: 10px;
background-color: hotpink;
text-align: center;
color: #ffffff;
/* 去下劃線 */
text-decoration: none;
margin-right: 5px;
font: bold 20px/50px Arial;
}
/* 屬性名,屬性名 = 屬性值(正則)
= 絕對等于
*= 包含這個元素
^= 以這個開頭
$= 以這個結尾
*/
/* 存在id屬性的元素 a[] {} */
a[id] {
background-color: yellow;
}
/* id=first的元素 */
a[id=first] {
background-color: #63ff23;
}
/* class中帶有links的元素 */
a[class*="links"] {
background-color: pink;
}
/* 選中href中以http開頭的元素 */
a[href^=http] {
background-color: yellowgreen;
}
/* 選中href中以doc結尾的元素 */
a[href$=doc] {
background-color: orange;
}
</style>
</head>
<body>
<p class="demo">
<a href="https://www.baidu.com" class="links item first" id="first">1</a>
<a href="" class="links item active" target="_blank" title="test">2</a>
<a href="image/123.html" class="links item">3</a>
<a href="image/123.png" class="links item">4</a>
<a href="image/123.jpg" class="links item">5</a>
<a href="abc" class="links item">6</a>
<a href="/a.pdf" class="links item">7</a>
<a href="/abc.pdf" class="links item">8</a>
<a href="adc.doc" class="links item">9</a>
<a href="abcd.doc" class="links item last">10</a>
</p>
</body>
</html>
4. 美化網頁
4.1. 字型樣式
- span标簽:重點要突出的字,使用span套起來
4.2. 文本樣式
- text-indent: 2em; 段落首行縮進(em表示字元)。
- 行高與塊的高度一緻時就可以上下居中。
- text-decoration:
- underline是下劃線
- line-through是中劃線
- overline是上劃線
- none可以用于超連結去掉下劃線
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
img, span {
vertical-align: middle;
}
</style>
</head>
<body>
<img src="image/1608.jpg">
<span>123456</span>
</body>
</html>
4.3. 清單樣式
- list-style:
- none去掉圓點
- circle空心圓點
- decimal數字
- square正方形
4.4. 盒子模型
- body總有一個預設的外邊距,故經常設定margin: 0
- 外邊距的妙用:居中元素(margin: 0 auto;)
4.5. 圓角邊框
- border-radius: xpx, ypx, zpx, rpx; (x代表左上,y代表右上,z代表右下,r代表左下,順時針方向)
5. 浮動
5.1. 标準文檔流
- 塊級元素:獨占一行
h1-h6 p div 清單...
- 行内元素:不獨占一行
span a img strong...
- 行内元素可以被包含在塊級元素中,反之不可以
5.2. display
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
<!--
block 塊元素
inline 行内元素
inline-block 塊元素,但是可以内聯在一行
none 不顯示
-->
div {
width: 100px;
height: 100px;
border: 1px solid red;
display: inline;
}
span {
width: 100px;
height: 100px;
border: 1px solid red;
display: block;
}
</style>
</head>
<body>
<div>div塊元素</div>
<span>span行内元素</span>
</body>
</html>
- display是一種實作行内元素排列的方式,但是float更常用
5.3. float
- float是使得元素浮于網頁之上,浮動以後的元素是不占位置的
- 清除浮動:
- clear: both; 兩側不允許有浮動元素
- clear:left; 左側不允許有浮動元素
- clear:right; 右側不允許有浮動元素
5.4. 父級邊框塌陷的問題
- 增加腹肌元素的高度
#father {
border: 1px #000 solid;
height: 800px;;
}
- 增加一個空的div标簽,清除浮動
<div class="clear"><div>
.clear {
clear: both;
margin: 0;
padding: 0;
}
- overflow
在父級元素中增加一個 overflow: hidden;
- 父類添加一個僞類:after
#father:after {
content: '';
display: block;
clear: both;;
}
- 小結
- 代碼中盡量避免空div
- overflow在下拉的一些場景避免使用
- 父類添加一個僞類:after(推薦使用)
- 對比
-
display
方向不可以控制
-
float
浮動起來會脫離标準文檔流,是以要解決父級邊框塌陷問題
6. 定位
6.1. 相對定位
- 相對定位:positive: relative;
- 相對于原來的位置,進行指定的偏移,相對定位仍然在标準文檔流中,原來的位置會被保留。
6.2. 絕對定位
- 沒有父級元素定位的前提下,相對于浏覽器定位
- 假設父級元素存在定位,通常會相對于父級元素進行偏移
- 在父級元素範圍内移動,相對于父級或浏覽器的位置,進行指定的偏移,相對定位仍然不在标準文檔流中,原來的位置不會被保留。
6.3. 固定定位
- 回到頂部,導覽列會使用。
6.4. z-index
- 圖像層級:預設是0,最高無限,一般設定999