任務七

1.class 和 id 的使用場景?

Id屬性值在頁面上唯一,用于選擇指定元素,class作為類選擇器,匹配同一類型的,適用于多個元素有共同的樣式

2.CSS選擇器常見的有幾種?

  • 基礎選擇器:
    *通用元素選擇器,匹配頁面的任何元素(這也決定了其很少使用)
    #id id選擇器,匹配特定的id元素
    .class 類選擇器,匹配class包含(不是等于)特定類的元素
    element 標簽 選擇器

  • 組合選擇器
    E,F 多元素選擇器,用,分開,同時匹配元素E或元素F
    E F 后代選擇器,用空格分隔,匹配E元素所有的后代(不只是子元素、子元素向下遞歸)元素F
    E>F子元素選擇器,用>分隔,匹配E元素的所有直接子元素
    E+F 直接相鄰選擇器,匹配E元素之后的相鄰同級元素F
    E~F 普通相鄰選擇器(弟弟選擇器),匹配E元素之后的同級元素F(無論直接相鄰與否)
    .class1.class2 id和class選擇器連寫的時候中間沒有分隔符, .和#本身充當分隔符的元素
    Element#id id和class選擇器連寫的時候中間沒有分隔符, .和#本身充當分隔符的元素

  • 屬性選擇器
    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的元素

  • 偽類選擇器
    E:first-child 匹配元素E的第一個子元素
    E:link 匹配所有未被點擊的鏈接
    E:visited 匹配所有已被點擊的鏈接
    E:active匹配鼠標已經(jīng)其上按下、還沒有釋放的E元素
    E:hover 匹配鼠標懸停其上的E元素
    E:focus 匹配獲得當前焦點的E元素
    E:enabled 匹配表單中可用的元素
    E:disabled 匹配表單中禁用的元素
    E:checked 匹配表單中選中的radio或checkbox元素
    E::selection匹配用戶當前選中的元素
    E:nth-child(n) 匹配其父元素的第n個子元素,第一個編號為1
    E:nth-last-child(n) 匹配其父元素的倒數(shù)第n個子元素,第一個編號為1
    E:nth-of-type(n) 與:nth-child()作用類似,但是僅匹配使用同種標簽的元素
    E:nth-last-of-type(n) 與:nth-last-child()作用類似,但是僅匹配使用同種標簽的元素
    E:first-of-type 匹配父元素下使用同種標簽的第一個子元素,等同于:nth-of-type(1)
    E:last-of-type 匹配父元素下使用同種標簽的最后一個子元素,等同于:nth-last-of-type(1)

  • 偽元素選擇器
    E::first-line 匹配E元素的第一行
    E:: first-letter 匹配E元素內(nèi)容的第一個字母
    E::before 在E元素之前插入生成的內(nèi)容
    E::after 在E元素之后插入生成的內(nèi)容

3、選擇器的優(yōu)先級是怎樣的?對于復雜場景如何計算優(yōu)先級?

CSS優(yōu)先級從高到低分別是:

  1. 在屬性后面使用 !important 會覆蓋頁面內(nèi)任何位置定義的元素樣式
  2. 作為style屬性寫在元素標簽上的內(nèi)聯(lián)樣式
  3. id選擇器
  4. 類選擇器
  5. 偽類選擇器0
  6. 屬性選擇器
  7. 標簽選擇器
  8. 通配符選擇器
  9. 瀏覽器自定義

復雜場景時,有以下規(guī)則:

  • 行內(nèi)樣式 <div style="xxx"></div> ==> a
  • ID 選擇器 ==> b
  • 類,屬性選擇器和偽類選擇器 ==> c
  • 標簽選擇器、偽元素 ==> d
    然后對于復雜組合選擇器,逐一比較a b c d 的值 ,如果a值大則其優(yōu)先級高,如果小則優(yōu)先級低,相等則比較b值,以此類推

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

一般順序應該如此

  1. a:link
  2. a:visited
  3. a:hover
  4. a:active
    這樣順序的原因是:選擇器優(yōu)先級別相同時,后面的會覆蓋前面的,當鏈接未被操作時,a:link起作用,當鼠標移動到a鏈接上的時候,a:hover覆蓋a:link起作用,當點擊a鏈接時,a:active覆蓋a:link起作用。
    當a鏈接被點擊后,變成已瀏覽狀態(tài),a:visited覆蓋a:link起作用,當再次移動到當鼠標移動到a鏈接上的時候,a:hover覆蓋a:visited起作用,當點擊a鏈接時,a:active覆蓋a:visited起作用。

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

  • #header{ }
    Id選擇器,匹配id值為header的元素
  • .header{ }
    Class選擇器,匹配class值為header的元素
  • .header .logo{ }
    后代選擇器,中間用空格分隔,匹配class值為header元素的所有的后代class值為logo的元素
  • .header.mobile{ }
    匹配class值時包含header和mobile的元素
  • .header p, .header h3{ }
    匹配class值為header的p標簽和h3標簽
  • #header .nav>li{ }
    匹配id值為header 且class值為nav的直接子元素為li的標簽
  • #header a:hover{ }
    匹配id值為header的元素的后代a元素(當鼠標放置在上面時)
  • #header .logo~p{ }
    匹配id值為header的元素后代中的class值為logo的元素的同級元素p
  • #header input[type="text"]{ }
    匹配id值為header元素的具有type屬性值為text的后代input元素

6、列出你知道的偽類選擇器

偽類選擇器:利用文檔結(jié)構(gòu)樹實現(xiàn)元素過濾,通過文檔結(jié)構(gòu)的相互關(guān)系來匹配特定的元素,從而減少文檔內(nèi)class屬性和id屬性的定義,使得文檔更簡潔

E:first-child 匹配元素E的第一個子元素
E:link 匹配所有未被點擊的鏈接
E:visited 匹配所有已被點擊的鏈接
E:active匹配鼠標已經(jīng)其上按下、還沒有釋放的E元素
E:hover 匹配鼠標懸停其上的E元素
E:focus 匹配獲得當前焦點的E元素
E:enabled 匹配表單中可用的元素
E:disabled 匹配表單中禁用的元素
E:checked 匹配表單中選中的radio或checkbox元素
E::selection匹配用戶當前選中的元素
E:nth-child(n) 匹配其父元素的第n個子元素,第一個編號為1
E:nth-last-child(n) 匹配其父元素的倒數(shù)第n個子元素,第一個編號為1
E:nth-of-type(n) 與:nth-child()作用類似,但是僅匹配使用同種標簽的元素
E:nth-last-of-type(n) 與:nth-last-child()作用類似,但是僅匹配使用同種標簽的元素
E:first-of-type 匹配父元素下使用同種標簽的第一個子元素,等同于:nth-of-type(1)
E:last-of-type 匹配父元素下使用同種標簽的最后一個子元素,等同于:nth-last-of-type(1)

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

div:first-child div的父元素下的第一個子元素
div:first-of-type div的父元素下第一個div元素

8、運行如下代碼,解析下輸出樣式的原因。

.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é)果.png](http://upload-images.jianshu.io/upload_images/1347915-a3e6f8ad8cfcc332.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

解析:`.item1:first-child{  color: red;}` 代表class值為item1的元素的父元素下的第一個子元素的字體顏色為紅色,即第一個子元素p為紅色,即aa為紅色
 `.item1:first-of-type{background: blue;}`代表class值為item1的元素的父元素下的第一個同類型的子元素的背景顏色為藍色,代碼中class值為item1的元素有三個,類型為兩種p和h3,p元素對應父元素下的第一個同類型的子元素就是自己,即aa的背景為藍色。兩個h3元素對應父元素下的第一個同類型的子元素就是第一個h3元素,即bb的背景為藍色


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,602評論 19 139
  • 1、class 和 id 的使用場景? 2、CSS選擇器常見的有幾種? 3、選擇器的優(yōu)先級是怎樣的?對于復雜場景如...
  • 1.class 和 id 的使用場景? class:類選擇器,一個標簽可以有多個類且同一個類可以用到不同的標簽上,...
    饑人谷_兔子君閱讀 1,278評論 0 0
  • 一、CSS選擇器常見的有幾種? 基本選擇器 通配選擇器~選擇文檔中所有的html元素,用一個*表示 元素選擇器~選...
    dengpan閱讀 1,031評論 0 3
  • 3月6號,星期一。原本預定著下午去練車,誰曾想到老師上午就在群里發(fā)通知說下午開會,關(guān)于大學生軟件大賽。中午的時候我...
    酌酒前行閱讀 213評論 0 0

友情鏈接更多精彩內(nèi)容