久久久久久久视色,久久电影免费精品,中文亚洲欧美乱码在线观看,在线免费播放AV片

<center id="vfaef"><input id="vfaef"><table id="vfaef"></table></input></center>

    <p id="vfaef"><kbd id="vfaef"></kbd></p>

    
    
    <pre id="vfaef"><u id="vfaef"></u></pre>

      <thead id="vfaef"><input id="vfaef"></input></thead>

    1. 站長資訊網(wǎng)
      最全最豐富的資訊網(wǎng)站

      看看這兩個 CSS 面試題,考察你的基礎(chǔ)!

      見微知著,本篇文章給大家分享兩道有意思的 CSS 面試題,考察考察你的基礎(chǔ)!

      看看這兩個 CSS 面試題,考察你的基礎(chǔ)!

      前端(vue)入門到精通課程:進(jìn)入學(xué)習(xí)
      API 文檔、設(shè)計(jì)、調(diào)試、自動化測試一體化協(xié)作工具:點(diǎn)擊使用

      今天在論壇,有看到這樣一道非常有意思的題目,簡單的代碼如下:

      First Paragraph

      登錄后復(fù)制

      樣式如下:

      p#a {     color: green; } div::first-line {     color: blue; }
      登錄后復(fù)制

      試問,標(biāo)簽 <p> 內(nèi)的文字的顏色,是 green 還是 blue 呢?

      有趣的是,這里的最終結(jié)果是藍(lán)色,也就是 color: blue 生效了?!就扑]學(xué)習(xí):css視頻教程】

      看看這兩個 CSS 面試題,考察你的基礎(chǔ)!

      不對,正常而言,ID 選擇器的優(yōu)先級不應(yīng)該比偽類選擇器高么?為什么這里反而是偽類選擇器的優(yōu)先級更高呢?

      并且,打開調(diào)試模式,我們定位到 <p> 元素上,只看到了 color: green 生效,沒找到 div::first-line 的樣式定義:

      看看這兩個 CSS 面試題,考察你的基礎(chǔ)!

      只有再向上一層,我們找到 <div> 的樣式規(guī)則,才能在最下面看到這樣一條規(guī)則:

      看看這兩個 CSS 面試題,考察你的基礎(chǔ)!

      因此,這里很明顯,是<p> 標(biāo)簽繼承了父元素 <div> 的這條規(guī)則,并且作用到了自身第一行元素之上,覆蓋了原本的 ID 選擇器內(nèi)定義的 color: green。

      再進(jìn)行驗(yàn)證

      這里,另外一個比較迷惑的點(diǎn)在于,為什么 ID 選擇器的優(yōu)先級比 ::first-line 選擇器更低。

      我們再做一些簡單的嘗試:

      下面的 DEMO 展示了 ::first-line 樣式和各種選擇器共同作用時的優(yōu)先級對比,甚至包括了 !important 規(guī)則:

      • 第 1 段通過標(biāo)簽選擇器設(shè)置為灰色
      • 第 2 段通過類選擇器設(shè)置為灰色
      • 第 3 段通過 ID 選擇器設(shè)置為灰色
      • 第 4 段通過 !important bash 設(shè)置為灰色

      綜上的同時,每一段我們同時都使用了 ::first-line 選擇器。

      ::first-line vs. tag selector

      This paragraph ...

      ::first-line vs class selector

      This paragraph color i...

      ::first-line vs ID selector

      This paragraph color is set ...

      ::first-line vs !important

      This paragraph color is ....

      登錄后復(fù)制

      p {   color: #444; } p::first-line {   color: deepskyblue; }  .p2 {   color: #444; } .p2::first-line {   color: tomato; }  #p3 {   color: #444; } #p3::first-line {   color: firebrick; }  #p4 {   color: #444 !important; } #p4::first-line {   color: hotpink; }
      登錄后復(fù)制

      CodePen Demo — ::first-line: demo

      https://codepen.io/KittyGiraudel/pen/kWobaa/569e082a67400f5fb39a96030d0e9b6c

      看看效果:

      看看這兩個 CSS 面試題,考察你的基礎(chǔ)!

      可以看到,無論是什么選擇器,優(yōu)先級都沒有 ::first-line 高。

      究其原因,在于,::first-line 其實(shí)是個偽元素而不是一個偽類,被其選中的內(nèi)容其實(shí)會被當(dāng)成元素的子元素進(jìn)行處理,類似于 ::before,::after 一樣,因此,對于父元素的 color 規(guī)則,對于它而言只是一種級聯(lián)關(guān)系,通過 ::first-line 本身定義的規(guī)則,優(yōu)先級會更高!

      這也是為什么,在 MDN 文檔中,更推薦的是雙冒號的寫法(當(dāng)然瀏覽器都支持單冒號的寫法)– MDN — ::first-line

      看看這兩個 CSS 面試題,考察你的基礎(chǔ)!

      再來一題,MDN 的錯誤例子?一個有意思的現(xiàn)象

      說完上面這題。我們再來看看一題,非常類似的題目。

      在 MDN 介紹 :not 的頁面,有這樣一個例子:

      /* Selects any element that is NOT a paragraph */ :not(p) {   color: blue; }
      登錄后復(fù)制

      意思是,:not(p) 可以選擇任何不是 <p> 標(biāo)簽的元素。然而,上面的 CSS 選擇器,在如下的 HTML 結(jié)構(gòu),實(shí)測的結(jié)果不太對勁。

      p

      div
      span

      h1

      登錄后復(fù)制

      結(jié)果如下:

      看看這兩個 CSS 面試題,考察你的基礎(chǔ)!

      CodePen Demo — :not pesudo demo

      https://codepen.io/Chokcoco/pen/KKZbWjy

      意思是,:not(p) 仍然可以選中 <p> 元素。是的,在多個瀏覽器,得到的效果都是一致的。

      看到這里,你可以再停一下,思考一下,為什么 <p> 元素的顏色仍舊是 color: blue

      這是為什么呢?解答一下:

      這是由于 :not(p) 同樣能夠選中 <body>,那么 <body> 的 color 即變成了 blue,由于 color 是一個可繼承屬性,<p> 標(biāo)簽繼承了 <body> 的 color 屬性,導(dǎo)致看到的 <p> 也是藍(lán)色。

      我們把它改成一個不可繼承的屬性,試試看:

      /* Selects any element that is NOT a paragraph */ :not(p) {   border: 1px solid; }
      登錄后復(fù)制

      看看這兩個 CSS 面試題,考察你的基礎(chǔ)!

      OK,這次 <p> 沒有邊框體現(xiàn),沒有問題!

      因此,實(shí)際使用的時候,需要一定要注意樣式繼承的問題!

      (學(xué)習(xí)視頻分享:css視頻教程、web前端)

      贊(0)
      分享到: 更多 (0)
      網(wǎng)站地圖   滬ICP備18035694號-2    滬公網(wǎng)安備31011702889846號