任務(wù)7-選擇器

class 和 id 的使用場(chǎng)景?

class意思就是“類(lèi)” 是對(duì)一類(lèi)標(biāo)簽進(jìn)行操作,是一種"范圍殺傷",而id選擇器具有唯一性,是“精確打擊”

CSS選擇器常見(jiàn)的有幾種?

  1. 基礎(chǔ)選擇器
    • id選擇器 具有唯一性
    • class選擇器 可重復(fù)
    • **  * 通用選擇器 給整個(gè)頁(yè)面都設(shè)定相關(guān)的樣式
    • 元素標(biāo)簽選擇器
  2. 組合選擇器
    • 多元素選擇器 A,B,C{ 屬性 }
    • 后代選擇器 A B 匹配A元素范圍內(nèi)的所有子元素B
    • 直接后代選擇器 A>B 首先B是A的子元素 其次是要 “直接” 就是只選擇 “一層”的意思
    • A+B 首先這兩個(gè)元素是同級(jí)的,其次這兩個(gè)要直接相鄰 是“親兄弟”才行
    • A~B 只要同級(jí)就可以 匹配A元素之后的同級(jí)元素B 相不相鄰都無(wú)所謂
  3. 屬性選擇器
    • A[attr] 匹配所有具有屬性attr的元素
    • A[attr=value] 匹配屬性值為value的元素
    • A[attr~=value] 匹配所有屬性attr具有多個(gè)空格分隔,其中一個(gè)值等于value的元素
    • A[attr^=value] 匹配屬性attr的值以value開(kāi)頭的元素
    • A[attr$=value] 匹配屬性attr的值以value結(jié)尾的元素
    • A[attr*=value] 匹配屬性attr的值包含value的元素
  4. 偽類(lèi)選擇器
    • A:first-child:匹配元素A的第一個(gè)子元素
    • A:link :匹配素有未被點(diǎn)擊的鏈接
    • A:visited :匹配所有已經(jīng)被點(diǎn)擊的鏈接
    • A:active :匹配鼠標(biāo)已經(jīng)在其上按下,但是還沒(méi)有釋放的A元素
    • A:hover :匹配鼠標(biāo)懸停其上的A元素
    • A:focus :匹配獲得當(dāng)前焦點(diǎn)的A元素
    • A:lang(c) :匹配lang屬性等于c的元素
    • A:enabled :匹配表單中可用的元素
    • Adisabled :匹配表單中禁用的元素
    • A:checked: 匹配表單中被選中的radio或checkbox元素
    • A:selection: 匹配用戶(hù)當(dāng)前選中的元素
    • A:root :匹配文檔的根元素,對(duì)于HTML文檔,就是HTML元素
    • A:nth-child(n) :匹配其父元素的第n個(gè)子元素,第一個(gè)編號(hào)為1
    • A:nth-last-child :匹配其父元素的第n個(gè)子元素,第一個(gè)編號(hào)為1
    • A:nth-of-type(n):與:nth-child作用類(lèi)似,但是僅匹配使用同種標(biāo)簽的元素
    • A:nth-last-of-type(n) :與nth-last-child作用相似,但是僅匹配使用同種標(biāo)簽的元素
    • A:first-child:匹配父元素的第一個(gè)子元素
    • A:last-child :匹配父元素的最后一個(gè)子元素
    • A:first-of-type :即 A:nth-of-type(1)
    • A:last-of-type :即 A:nth-last-of-type(1)
    • A:only-child :匹配父元素下僅有的一個(gè)子元素
    • A:only-of-type :匹配父元素下使用同種標(biāo)簽的唯一一個(gè)子元素
  5. 偽元素選擇器
    • A::first-line 匹配E元素內(nèi)容的第一行

    • A::first-letter 匹配E元素內(nèi)容的第一個(gè)字母

    • A::before 在E元素之前插入生成的內(nèi)容

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

      *content:'';一定得帶上 *

選擇器的優(yōu)先級(jí)是怎樣的?對(duì)于復(fù)雜場(chǎng)景如何計(jì)算優(yōu)先級(jí)?

  • 優(yōu)先級(jí)排序

    1. 帶有!important的值權(quán)重最高,覆蓋一切,但是要慎用!
    2. 行內(nèi)樣式 直接把樣式與html代碼混在一起寫(xiě),這種方法寫(xiě)出來(lái)的樣式,權(quán)重也很高,但 是最好不要用。
    3. ID選擇器 算是正常范圍選擇器內(nèi)權(quán)重最高的了
    4. 類(lèi)選擇器 也就是 class選擇器
    5. 偽類(lèi)選擇器 類(lèi)似于 a:hover a:fouces 這種的選擇器
    6. 屬性選擇器 操作input時(shí)常用 像 input[type="text"] {}就是屬性選擇器了
    7. 標(biāo)簽選擇器 像這種 p{} 這種選擇器選擇范圍超級(jí)廣,但是老師叮囑過(guò)最好別用
    8. 通配符選擇器像這種 *{} 這種選擇器基本不用了
    9. 瀏覽器自帶樣式這種的話(huà)一般在寫(xiě)頁(yè)面的時(shí)候都會(huì)被重置
  • 復(fù)雜場(chǎng)景下的選擇器優(yōu)先級(jí)排序
    上一個(gè)小題已經(jīng)說(shuō)明了選擇器的優(yōu)先級(jí)是怎么排的了,就我自己的理解來(lái)看,第一種第二種和第 八第九種在正常狀態(tài)下可以忽略了就,從id選擇器開(kāi)始,給每個(gè)種類(lèi)的選擇器的權(quán)限大小賦予 相應(yīng)的計(jì)量單位,我自己分配的計(jì)量單位如下:

    1. id選擇器在篩選之后的選擇器中權(quán)重最高,所以給他的單位為“萬(wàn)”
    2. class選擇器弱一點(diǎn)兒給它單位 “千”
    3. 偽類(lèi)選擇器的單位是“百”
    4. 屬性選擇器的單位是“十”
    5. 標(biāo)簽選擇器的單位是 “個(gè)”
      接著舉個(gè)栗子
    <!DOCTYPE html>
    

<html lang="en">
<head>
<meta charset="UTF-8" />
<title>看看權(quán)重</title>
<style>
p{
color: blue;
}
.yezhu{
color: red;
}
#yezhu-pro{
color: pink;
}
p.yezhu{
color: yellow;
}
#yezhu-pro.yezhu{
color: #257eb8;
}
/*
根據(jù)我的“個(gè),十,百,千,萬(wàn)論證法” 來(lái)看看怎么分權(quán)重
1.最高的無(wú)疑是最后一個(gè)選擇器了有一個(gè)id選擇器那就是1萬(wàn)還有個(gè)類(lèi)選擇器那就是1千合起來(lái)最后的權(quán)重值是11000
2.注釋掉最高的,那排第二的就是第三個(gè)選擇器了權(quán)重值10000,剩下的依次類(lèi)推就可以了
*/
</style>
</head>
<body>
<p id="yezhu-pro" class="yezhu">這是一只野豬</p>
</body>
</html>
```

a:link, a:hover, a:active, a:visited 的順序是怎樣的? 為什么?

這三個(gè)為類(lèi)選擇器的書(shū)寫(xiě)順序?yàn)?/p>

a:link{}
a:visited{}
a:hover{}
a:active{}

之所以按這種順序?qū)懯且驗(yàn)榕滤麄兿嗷ジ采w,影響顯示效果

以下選擇器分別是什么意思?

#header{
}
/*選擇ID為header的元素*/

.header{
}
/*選擇class為header的元素*/

.header .logo{
}
/*選擇class為header的范圍內(nèi) 類(lèi)名為logo的元素*/

.header.mobile{
}
/*選擇既有header類(lèi)又有mobile類(lèi)的元素*/

.header p, .header h3{
}
/*給類(lèi)名為header中的p和同樣范圍內(nèi)的h3寫(xiě)上相同的樣式*/

#header .nav>li{
}
/*id為header的范圍中,類(lèi)名叫nav的元素里,把表層的li都選上,不進(jìn)行 “擊穿式查找” */

#header a:hover{
}
/*給class叫header的范圍內(nèi)里面的a標(biāo)簽設(shè)一個(gè)hover為類(lèi)*/

#header .logo~p{
}
/*選擇id為header的范圍面的class為logo的元素中p的所有所有所有同輩兄弟標(biāo)簽*/

#header input[type="text"]{
}
/*在class為header的范圍內(nèi) 選擇輸入框類(lèi)型為text的輸入框 設(shè)定相應(yīng)的樣式*/



列出你知道的偽類(lèi)選擇器

  1. a:link 匹配所有未被點(diǎn)擊的鏈接
  2. a:visited 匹配所有已被點(diǎn)擊的鏈接
  3. a:active 匹配鼠標(biāo)已經(jīng)其上按下、還沒(méi)有釋放的E元素
  4. a:hover 匹配鼠標(biāo)懸停在上面時(shí)所產(chǎn)生的變化
  5. a:enabled 匹配表單中可用的元素
  6. a:disabled 匹配表單中禁用的元素
  7. a:checked 匹配表單中被選中的radio或checkbox元素
  8. a::selection 匹配用戶(hù)當(dāng)前選中的元素
  9. a:nth-child(n) 匹配其父元素的第n個(gè)子元素,第一個(gè)編號(hào)為1
  10. a:nth-last-child(n) 匹配其父元素的倒數(shù)第n個(gè)子元素,第一個(gè)編號(hào)為1
  11. a:nth-of-type(n) 與:nth-child()作用類(lèi)似,但是僅匹配使用同種標(biāo)簽的元素
  12. a:nth-last-of-type(n) 與:nth-last-child() 作用類(lèi)似,但是僅匹配使用同種標(biāo)簽的元素

div:first-child、div:first-of-type的作用和區(qū)別

作用
div:first-child 選中其父元素下第一個(gè)子元素
div:first-of-type 選中其父元素下使用相同標(biāo)簽的第一個(gè)子元素

區(qū)別
這兩種方式容易混淆,但是也容易區(qū)分,主要是要記住這兩種選擇器的選擇依據(jù),第一種是以子元 素?cái)?shù)量作為依據(jù)進(jìn)行選擇,第二種是以標(biāo)簽為依據(jù)進(jìn)行選擇在相同的標(biāo)簽中進(jìn)行排位選擇

運(yùn)行如下代碼,解析下輸出樣式的原因。

<style>
.item1:first-child{
  color: red;
}
.item1:first-of-type{
  background: blue;
}
</style>
 <div class="ct">
   <p class="item1">aa</p>
   <h3 class="item1">bb</h3>
   <h3 class="item1">ccc</h3>
 </div>

顯示結(jié)果為 aa文字顏色為紅色,背景為藍(lán)色,bb文字顏色為黑色背景蔚藍(lán)色,ccc沒(méi)有任何變化

原因

第一個(gè)樣式選擇器選的是將排序?yàn)榈谝坏臉邮矫麨閕tem1的元素里面的文字變成紅色。

第二個(gè)選擇器的意思是首先選擇元素的位置也是選第一個(gè)元素不過(guò)不同在于是選擇使用item1類(lèi)名并且標(biāo)簽也是第一個(gè)的元素,確定范圍之后進(jìn)行篩選首先確定使用item1的元素有1個(gè)P標(biāo)簽2個(gè)h3標(biāo)簽,結(jié)果是選第一個(gè)p標(biāo)簽(其實(shí)就一個(gè)p標(biāo)簽也不用怎么選....),和第一個(gè)h3標(biāo)簽。最終結(jié)果就出來(lái)了。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • 一、CSS選擇器常見(jiàn)的有幾種? 基本選擇器 通配選擇器~選擇文檔中所有的html元素,用一個(gè)*表示 元素選擇器~選...
    dengpan閱讀 978評(píng)論 0 3
  • 1.class 和 id 的使用場(chǎng)景? 類(lèi)選擇器允許以一種獨(dú)立于文檔元素的方式來(lái)指定樣式。該選擇器可以單獨(dú)使用,也...
    草鞋弟閱讀 2,485評(píng)論 0 1
  • 1.class 和 id 的使用場(chǎng)景? 多個(gè)標(biāo)簽可以使用同一個(gè)class,一個(gè)id只能對(duì)應(yīng)一個(gè)標(biāo)簽 2.CSS選擇...
    molly的紅草帽閱讀 382評(píng)論 0 0
  • 1.class 和 id 的使用場(chǎng)景? 兩者都能選取DOM節(jié)點(diǎn)并給DOM節(jié)點(diǎn)添加樣式,但是W3C標(biāo)準(zhǔn)里規(guī)定頁(yè)面中只...
    饑人谷_米彌輪閱讀 427評(píng)論 0 1
  • 感賞彩羽今天一早就帶上作業(yè)去補(bǔ)習(xí)班了! 感賞彩羽對(duì)學(xué)習(xí)充滿(mǎn)著熱情! 感賞彩羽對(duì)妹妹友愛(ài),會(huì)拿蛋糕給妹妹! 感賞彩羽...
    無(wú)心言歡閱讀 180評(píng)論 0 0