CSS基礎(chǔ)和選擇器
CSS是什么?
css全稱是Cascading Style Sheets,層疊樣式表,是網(wǎng)頁樣式的描述語言。
@charset "utf-8"
h1 {
color: red;
font-size: 20px;
}

在頁面引入css的四種方式:
- 內(nèi)聯(lián)樣式
<h1 style="color: red; font-size: 20px;"></h1> - 內(nèi)部樣式
<style type="text/css">
h1 {
color: red;
font-size: 20px;
}
</style>
- 外部樣式(一)
<head>
<link rel="stylesheet" type="text/css" href="index.css">
</head>
- 外部樣式(二)
<style>
@import url("index.css");
@import "demo.css"
</style>
瀏覽器的默認(rèn)樣式

文件路徑
絕對路徑:
是帶有盤符的路徑:C:\上課內(nèi)容\上課視頻\01html第一天\源代碼\1.jpg-
相對路徑
由頁面是一個文件,圖片也是一個文件,而現(xiàn)在需要在頁面上輸出圖片,所以需要得到圖片相對于文件的路徑。
1.如果頁面與圖片在同一目錄下面:
Paste_Image.png
2.如果頁面再圖片的上一級目錄:


3.如果圖片在頁面的上一級目錄:

注意:因為相對路徑的可移植性比絕對路徑強(qiáng),所以在實際開發(fā)中只要不出意外情況都是用相對路徑。
CSS選擇器
-
選擇器類型
1.基礎(chǔ)選擇器
2.組合選擇器
3.屬性選擇器
4.偽類選擇器
5.偽元素選擇器
基礎(chǔ)選擇器
| 選擇器 | 含義 |
|---|---|
| 通配符* | 通用元素選擇器,匹配頁面任何元素(這也就決定了我們很少使用) |
| #id | id選擇器,匹配特定id元素 |
| .class | 類選擇器,匹配class包含(不是等于)特定類的元素 |
| element | 標(biāo)簽選擇器 |
示例
* {
margin: 0;
padding: 0;
}
#id-selector {
color: #333;
}
.class-selector {
background: #ccc
}
p {
font-size: 20px;
}
組合選擇器
| 選擇器 | 含義 | |
|---|---|---|
| E,F | 多元素選擇器,用,分隔,同時匹配元素E或元素F | |
| E F | 后代選擇器,用空格分隔,匹配E元素所有的后代(不只是子元素、子元素向下遞歸)元素F | |
| E>F | 子元素選擇器,用>分隔,匹配E元素的所有直接子元素 | |
| E+F | 直接相鄰選擇器,匹配E元素之后的相鄰的同級元素F | |
| E~F | 普通相鄰選擇器(弟弟選擇器),匹配E元素之后的同級元素F(無論直接相鄰 與否) | |
| .class1.class2 | id和class選擇器和選擇器連寫的時候中間沒有分隔符,和 #本身充當(dāng)分隔符的元素 | . |
| element#idt | id和class選擇器和選擇器連寫的時候中間沒有分隔符,.和 #本身充當(dāng)分隔符的元素 |
示例:
- 并列選擇器

2.后代選擇器

3.直接子元素

- 直接相鄰選擇器 E+F

5.普通相鄰選擇器(弟弟選擇器)(圖片中.p1后面的所有同級鄰居p全都選中了?。?/p>

6.element.class2

7..class1.class2

屬性選擇器
| 選擇器 | 含義 |
|---|---|
| E[attr] | 匹配所有具有屬性attr的元素,div[id]就能取到所有有id屬性的div |
| E[attr = value] | 匹配屬性attr值為value的元素,div[id=test],匹配id=test的div |
| E[attr ~= value] | 匹配所有屬性attr具有多個空格分隔、其中一個值等于value的元素 |
| E[attr ^= value] | 匹配屬性attr的值以value開頭的元素 |
| E[attr $= value] | 匹配屬性attr的值以value結(jié)尾的元素 |
| E[attr *= value] | 匹配屬性attr的值包含value的元素 |
示例:
1.E[type=text]匹配type屬性為text的元素

偽類選擇器
| 選擇器 | 含義 |
|---|---|
| E:first-child | 匹配元素E的第一個子元素 |
| E:link | 匹配所有未被點擊的鏈接 |
| E:visited | 匹配所有已被點擊的鏈接 |
| E:hover | 匹配鼠標(biāo)懸停其上的E元素 |
| E:active | 匹配鼠標(biāo)已經(jīng)其上按下、還沒有釋放的E元素 |
| E:focus | 匹配獲得當(dāng)前焦點的E元素 |
| E:lang(c) | 匹配lang屬性等于c的E元素 |
| E:enabled | 匹配表單中可用的元素 |
| E:disabled | 匹配表單中禁用的元素 |
| E:checkedt | 匹配表單中被選中的radio或checkbox元素 |
| E::selection | 匹配用戶當(dāng)前選中的元素 |
| E:root | 匹配文檔的根元素,對于HTML文檔,就是HTML元素 |
| E:nth-child(n) | 匹配其父元素的第n個子元素,第一個編號為1 |
| E:nth-last-child(n) | 匹配其父元素的倒數(shù)第n個子元素,第一個編號為1 |
| E:nth-of-type(n) | 與:nth-child()作用類似,但是僅匹配使用同種標(biāo)簽的元素 |
| E:nth-last-of-type(n) | 與:nth-last-child() 作用類似,但是僅匹配使用同種標(biāo)簽的元素 |
| E:last-child | 匹配父元素的最后一個子元素,等同于:nth-last-child(1) |
| E:first-of-type | 匹配父元素下使用同種標(biāo)簽的第一個子元素,等同于:nth-of-type(1) |
| E:last-of-type | 匹配父元素下使用同種標(biāo)簽的最后一個子元素,等同于:nth-last-of-type(1) |
| E:only-child | 匹配父元素下僅有的一個子元素,等同于:first-child:last-child或 :nth-child(1):nth-last-child(1) |
| E:only-of-type | 匹配父元素下使用同種標(biāo)簽的唯一一個子元素,等同于:first-of-type:last-of-type或 :nth-of-type(1):nth-last-of-type(1) |
| E:empty | 匹配一個不包含任何子元素的元素,文本節(jié)點也被看作子元素 |
| E:not(selector) | 匹配不符合當(dāng)前選擇器的任何元素 |
注意:a:link、a:visited、a:hover、a:active正確順序是這樣的!
記憶方法:
愛恨原則:love-hate
心理作用:
lv-ha:買了一個lv,心里樂哈哈
有些錨偽類除了可以作用在a標(biāo)簽上還可以作用在其他標(biāo)簽上:
:link 只能用于a標(biāo)簽
:visited 只能用于a標(biāo)簽
:hover 其他標(biāo)簽也可以使用這個偽類
:active 其他標(biāo)簽也可以使用這個偽類
示例:
1.E:first-child

- E:first-of-type(父元素下使用同種標(biāo)簽的第一個子元素)

- E:nth-of-type(2)[括號中的2代表E元素的父元素下面同種類型標(biāo)簽的第二個標(biāo)簽]

像第三個例子中的2,可以寫成數(shù)字1,2,3,4,5,6等等。也可以寫成2n(偶數(shù)),2n+1(奇數(shù)),或者4n-1。也可直接用英文even(偶數(shù)),odd(奇數(shù))。
偽元素選擇器
| 選擇器 | 含義 |
|---|---|
| E::first-line | 匹配E元素內(nèi)容的第一行 |
| E::first-letter | 匹配E元素內(nèi)容的第一個字母 |
| E::before | 在E元素之前插入生成的內(nèi)容 |
| E::after | 在E元素之后插入生成的內(nèi)容 |
示例: (這兩個示例面試會經(jīng)常用到)
1.E:before(在E元素之前插入生成的內(nèi)容)

2.E::after(在E元素內(nèi)容之后插入生成的內(nèi)容)

選擇器優(yōu)先級(重點)
CSS優(yōu)先級從高到低分別是:
1.在屬性后面使用!important會覆蓋頁面內(nèi)任何位置定義的元素樣式
2.作為style屬性寫在元素標(biāo)簽上的內(nèi)聯(lián)樣式
3.id選擇器
4.類選擇器
5.偽類選擇器
6.屬性選擇器
7.標(biāo)簽選擇器
8.通配符選擇器
9.瀏覽器自定義
當(dāng)多個選擇器組合以后,我們要比較優(yōu)先級,就需要計算它們的權(quán)重。
算法:
(0,0,0,0)==》第一個0對應(yīng)的是important的個數(shù),第二個0對應(yīng)的是id選擇器的個數(shù),第三個0對應(yīng)的是類選擇器的個數(shù),第四個0對應(yīng)的是標(biāo)簽選擇器的個數(shù),就是當(dāng)前選擇器的權(quán)重。
比較:
先從第一個0開始比較,如果第一個0大,那么說明這個選擇器的權(quán)重高,如果第一個相同,比較第二個,依次類推。
總結(jié):權(quán)重是優(yōu)先級的算法。
選擇器工作的一個原理:
選擇器在查找元素的時候是從右往左找!??!
文章著作權(quán)歸饑人谷_sunny和饑人谷所有,轉(zhuǎn)載須說明來源
