(理解)偽類和偽元素的區(qū)別
學(xué)習(xí)這么長時(shí)間對于一些基本點(diǎn)還是不太理解请垛,所以在這里進(jìn)行了區(qū)分
第一種理解
偽類用于向某些選擇器添加特殊的效果宗收。
偽元素用于將特殊的效果添加到某些選擇器混稽。
第二種理解
偽類的效果可以通過添加一個(gè)實(shí)際的類來達(dá)到匈勋,而偽元素的效果則需要通過添加一個(gè)實(shí)際的元素才能達(dá)到洽洁,這也是為什么他們一個(gè)稱為偽類饿自,一個(gè)稱為偽元素的原因昭雌。
偽類有::first-child 烛卧,:link:,vistited局雄,:hover哎榴,:active迎变,:focus飘言,:lang
偽元素有::first-line谆吴,:first-letter句狼,:before腻菇,:after
偽元素和偽類之所以這么容易混淆昔馋,是因?yàn)樗麄兊男Ч愃贫覍懛ㄏ喾虑鹧Γ珜?shí)際上 [css3]為了區(qū)分兩者洋侨,已經(jīng)明確規(guī)定了偽類用一個(gè)冒號(hào)來表示妥粟,而偽元素則用兩個(gè)冒號(hào)來表示勾给。
:Pseudo-classes //偽類
::Pseudo-elements //偽元素
但因?yàn)榧嫒菪缘膯栴}播急,所以現(xiàn)在大部分還是統(tǒng)一的單冒號(hào)可训,但是拋開兼容性的問題握截,我們在書寫時(shí)應(yīng)該盡可能養(yǎng)成好習(xí)慣固歪,區(qū)分兩者胯努。
偽元素選擇器
::first-line 匹配文本塊的首行
::first-letter 選擇文本塊的首字母 :
:before 與 ::after ——使用 contnet 屬性生成額外的內(nèi)容并插入在標(biāo)記中:
偽類選擇器
E F:nth-child(n):該選擇器定位元素E的第n個(gè)子元素的元素F:
div.class p:nth-child(3) {color:#f00;} //class="class"的div容器里的第3個(gè)元素p,如果第3個(gè)子元素不是p,此樣式將失效
E F:nth-last-child(n):該選擇器定位元素E的倒數(shù)第n個(gè)子元素的元素F;
E:nth-of-type(n):該選擇器定位元素E的第n個(gè)指定類型子元素;
E:nth-lash-of-type(n):該選擇器定位元素E的導(dǎo)數(shù)第n個(gè)指定類型子元素:
.class p:nth-child(2) 與 .class p:nth-of-type(2) 的區(qū)別在于独郎,如果.class里的第2個(gè)子元素不是P元素時(shí)踩麦,.class p:nth-child(2) 的樣式將無效,而.class p:nth-of-type(2) 將定位在 .class 里的第2個(gè)p元素
nth-child(n)氓癌、nth-last-child(n)谓谦、nth-of-type(n)、nth-last-of-type(n)贪婉,這其中的 n 可以使用數(shù)字靜態(tài)式反粥,比如 .nth-child(2n+1) 將匹配第1、3疲迂、5...個(gè)元素
E:first-child:父元素的第一個(gè)子元素E才顿,與:nth-child(1)相同;
E:last-child:父元素的倒數(shù)第一個(gè)子元素E尤蒿;
E:first-of-type:與:nth-of-type(1)相同郑气;
E:last-of-type:與:nth-last-of-type(1)相同;
E:only-child:父元素中唯一的子元素E腰池;
E:only-of-type:父元素中唯一具有該類型的元素E尾组;
E:empty:沒有子元素的元素忙芒,沒有子元素包括文本節(jié)點(diǎn);
E:lang(en):具有使用雙字母縮寫(en)表示的語言的元素讳侨;
E:not(exception):該選擇器將選擇與括號(hào)內(nèi)的選擇器不匹配的元素:
:root —— root 選擇頁面的根元素
p:not(.item3)——not 排除某個(gè)或者某類元素——not(被排除的元素)
div:empty——指定的前面選擇器所選的元素內(nèi)容為空則生效匕争。
---input的偽類選擇器---
input:focus——當(dāng)輸入框獲取焦點(diǎn)的時(shí)候應(yīng)用此樣式
input:enabled——起用狀態(tài)下的樣式
input:disabled——禁用狀態(tài)下的樣式
input:read-only——在輸入框?yàn)橹蛔x狀態(tài)下的樣式
input:read-write——輸入框?yàn)榭勺x可寫狀態(tài)下的樣式
input:checked——checked 表示選中狀態(tài)下checkbox 的樣式
input:indeterminate + label——checkbox 半選擇狀態(tài)下的樣式
indeterminate——需要配合JS來使用(以下是JS代碼)
var checkBox = document.querySelector("#box6>input");
//半選擇狀態(tài) 只能用js來設(shè)置
checkBox.indeterminate = true;