搜尋
首頁web前端css教學看看這兩個 CSS 面試題,考察你的基礎!

見微知著,這篇文章給大家分享兩道有趣的 CSS 面試題,考察考察你的基礎!

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

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

<div>
    <p id="a">First Paragraph</p>
</div>

樣式如下:

p#a {
    color: green;
}
div::first-line {
    color: blue;
}

試問,標籤<p></p> 內的文字的顏色,是green 還是blue 呢?

有趣的是,這裡的最終結果是藍色,也就是 color: blue 生效了。 【推薦學習:css影片教學

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

不對,正常而言,ID 選擇器的優先權不應該比偽類別選擇器高麼?為什麼這裡反而是偽類選擇器的優先權更高呢?

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

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

只有再向上一層,我們找到

的樣式規則,才能在最下面看到這樣一條規則:

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

因此,這裡很明顯,是<p></p> 標籤繼承了父元素 <div> 的這條規則,並且作用到了自身第一行元素之上,覆寫了原本的ID 選擇器內定義的<code>color: green#。

再進行驗證

這裡,另一個比較迷惑的點在於,為什麼ID 選擇器的優先權比::first-line選擇器更低。

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

下面的DEMO 展示了::first-line 樣式和各種選擇器共同作用時的優先順序對比,甚至包括了!important 規則:

  • 第1 段透過標籤選擇器設定為灰色
  • 第2 段透過類別選擇器設定為灰色
  • 第3 段透過ID 選擇器設定為灰色
  • 第4 段透過!important bash 設定為灰色

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

<h2 id="first-line-nbsp-vs-nbsp-tag-nbsp-selector">::first-line vs. tag selector</h2>
<p>This paragraph ...</p>  

<h2 id="first-line-nbsp-vs-nbsp-class-nbsp-selector">::first-line vs class selector</h2>
<p class="p2">This paragraph color i...</p>  

<h2 id="first-line-nbsp-vs-nbsp-ID-nbsp-selector">::first-line vs ID selector</h2>
<p id="p3">This paragraph color is set ...</p>  

<h2 id="first-line-nbsp-vs-nbsp-important">::first-line vs !important</h2>
<p id="p4">This paragraph color is ....</p>
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;
}

CodePen Demo -- ::first-line: demo

https://codepen.io/KittyGiraudel/pen/kWobaa/569e082a67400f5fb39a96030d0e#96c

#看看效果:
<p></p>

看看這兩個 CSS 面試題,考察你的基礎!可以看到,無論是什麼選擇器,優先權都沒有

::first-line

高。 究其原因,在於,

::first-line 其實是個偽元素而不是一個偽類,被其選中的內容其實會被當成元素的子元素進行處理,類似於::before::after 一樣,因此,對於父元素的color 規則,對於它而言只是一種級聯關係,透過: :first-line 本身定義的規則,優先順序會更高! 這也是為什麼,在MDN 文件中,更推薦的是雙冒號的寫法(當然瀏覽器都支援單冒號的寫法)--

MDN -- ::first-line

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

再來一題,MDN 的錯誤範例?一個有趣的現象

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

在MDN 介紹

:not

的頁面,有這樣一個例子:<pre class='brush:php;toolbar:false;'>/* Selects any element that is NOT a paragraph */ :not(p) { color: blue; }</pre>意思是,

:not(p)

可以選擇任何不是<p></p> 標籤的元素。然而,上面的 CSS 選擇器,在如下的 HTML 結構,實測的結果不太對勁。 <pre class='brush:php;toolbar:false;'>&lt;p&gt;p&lt;/p&gt; &lt;div&gt;div&lt;/div&gt; &lt;span&gt;span&lt;/span&gt; &lt;h1 id=&quot;h&quot;&gt;h1&lt;/h1&gt;</pre>結果如下:

<p></p>

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

CodePen Demo -- :not pesudo demo

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

<p></p>意思是,
:not(p)

仍然可以選取<p></p> 元素。是的,在多個瀏覽器,得到的效果都是一致的。 看到這裡,可以再停一下,思考一下,為什麼

<p></p>

元素的顏色仍舊是 color: blue這是為什麼呢?解答一下:

这是由于 :not(p) 同样能够选中 ,那么 的 color 即变成了 blue,由于 color 是一个可继承属性,<p></p> 标签继承了 的 color 属性,导致看到的 <p></p> 也是蓝色。

我们把它改成一个不可继承的属性,试试看:

/* Selects any element that is NOT a paragraph */
:not(p) {
  border: 1px solid;
}

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

OK,这次 <p></p> 没有边框体现,没有问题!

因此,实际使用的时候,需要一定要注意样式继承的问题!

(学习视频分享:css视频教程web前端

以上是看看這兩個 CSS 面試題,考察你的基礎!的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文轉載於:segmentfault。如有侵權,請聯絡admin@php.cn刪除
兩個圖像和一個API:我們重新著色產品所需的一切兩個圖像和一個API:我們重新著色產品所需的一切Apr 15, 2025 am 11:27 AM

我最近找到了一種動態更新任何產品圖像的顏色的解決方案。因此,只有一種產品之一,我們可以以不同的方式對其進行著色以顯示

每周平台新聞:第三方代碼,被動混合內容,連接最慢的國家的影響每周平台新聞:第三方代碼,被動混合內容,連接最慢的國家的影響Apr 15, 2025 am 11:19 AM

在本週的綜述中,燈塔在第三方腳本上闡明了燈光,不安全的資源將在安全站點上被阻止,許多國家連接速度

託管您自己的非JavaScript分析的選項託管您自己的非JavaScript分析的選項Apr 15, 2025 am 11:09 AM

有很多分析平台可幫助您跟踪網站上的訪問者和使用數據。也許最著名的是Google Analytics(廣泛使用)

它全部都在頭上:管理帶有React頭盔的React Power Site的文檔頭它全部都在頭上:管理帶有React頭盔的React Power Site的文檔頭Apr 15, 2025 am 11:01 AM

該文檔負責人可能不是網站上最迷人的部分,但是其中所處的內容對於您的網站的成功也一樣重要

JavaScript中的Super()是什麼?JavaScript中的Super()是什麼?Apr 15, 2025 am 10:59 AM

當您看到一些稱為super()的JavaScript時,在子類中,您會使用super()調用其父母的構造函數和超級。訪問它

比較不同類型的本機JavaScript彈出窗口比較不同類型的本機JavaScript彈出窗口Apr 15, 2025 am 10:48 AM

JavaScript具有各種內置彈出API,它們顯示用於用戶交互的特殊UI。著名:

為什麼可訪問的網站如此難以構建?為什麼可訪問的網站如此難以構建?Apr 15, 2025 am 10:45 AM

前幾天,我與一些前端人們聊天,講述了為什麼這麼多公司努力創建可訪問的網站。為什麼可訪問的網站如此艱難

'隱藏”屬性顯然很弱'隱藏”屬性顯然很弱Apr 15, 2025 am 10:43 AM

有一個HTML屬性,它可以正是您認為應該做的:

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
4 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
4 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
4 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.聊天命令以及如何使用它們
4 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

mPDF

mPDF

mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

Atom編輯器mac版下載

Atom編輯器mac版下載

最受歡迎的的開源編輯器

EditPlus 中文破解版

EditPlus 中文破解版

體積小,語法高亮,不支援程式碼提示功能

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )專業的PHP整合開發工具

WebStorm Mac版

WebStorm Mac版

好用的JavaScript開發工具