首頁 > web前端 > css教學 > CSS 選擇器:解鎖現代網頁設計的進階選擇器

CSS 選擇器:解鎖現代網頁設計的進階選擇器

Mary-Kate Olsen
發布: 2024-11-27 13:42:11
原創
184 人瀏覽過

大家好!歡迎來到我的部落格。 ?

介紹

今天,我們將深入了解進階 CSS 選擇器的世界。這些選擇器,如:is()、:where()、:not() 和:has(),由於其特殊性規則或瀏覽器支援問題,一開始可能看起來有點棘手,但它們是超級強大的工具可建立更有效率、更動態的CSS。讓我們一起探索這些選擇器,了解它們的工作原理,查看它們的實際效果,並討論一些其他的細微差別。

您將在本文中學到什麼

  • 理解每個選擇器:分解 :is()、:where()、:not() 和 :has()。

  • 瀏覽器支援:了解哪些瀏覽器支援這些選擇器。

  • 特異性見解:這些選擇器如何影響 CSS 規則應用。

  • 實際範例:真實世界的用例,展示這些選擇器如何簡化您的 CSS。

  • 最佳實務:有效使用這些選擇器的提示。

:is() 選擇器

什麼是 :is()

:is() 偽類函數可讓您將樣式套用於多個選擇器,而無需重複相同的屬性。它對於對具有不同特異性的選擇器進行分組特別有用。

範例:

<div>





<pre class="brush:php;toolbar:false">:is(.alert.success, .alert.error, .alert.warning) {
    font-weight: bold;
    border: 1px solid;
    border-radius: 4px;
}

.alert.success { border-color: green; }
.alert.error { border-color: red; }
.alert.warning { border-color: orange; }

登入後複製

結果:所有警報類型均採用粗體和邊框,顏色由其特定類別定義。

CSS Selectors: Unlocking Advanced Selectors for Modern Web Design

?提示:您可以複製貼上 Codepen 上的所有範例,以查看實際結果。

? :where() 選擇器

什麼是 :where()

類似於 :is()、:where() 分組選擇器,但它的特異性為 0,非常適合創建易於覆蓋的樣式。

範例:

<button>





<pre class="brush:php;toolbar:false">/* Button styles with low specificity */
:where(button, input[type="button"], input[type="submit"]) {
    font-size: 1rem;
    padding: 0.5em 1em;
    background-color: #f0f0f0;
    border: none;
    cursor: pointer;
}

/* Specific override for primary buttons */
button.primary {
    background-color: #007BFF;
    color: white;
}
登入後複製

結果:

CSS Selectors: Unlocking Advanced Selectors for Modern Web Design

:not() 選擇器

什麼是 :不是()

:not() 偽類用於從選擇中排除某些元素。它非常適合將樣式應用於除特定元素或類別之外的所有內容。

範例:

<ul>
    <li>





<pre class="brush:php;toolbar:false">/* Style all list items except those marked as 'done' */
li:not(.done) {
    background-color: #f0f0f0;
}

/* Darken the text for completed items */
li.done {
    color: #888;
}

登入後複製

結果:

CSS Selectors: Unlocking Advanced Selectors for Modern Web Design

:has() 選擇器

什麼是 :has()

:has() 偽類別可讓您根據元素包含的內容設定元素的樣式。這個選擇器非常強大,但在撰寫本文時瀏覽器支援有限。

範例:

<div>





<pre class="brush:php;toolbar:false">:is(.alert.success, .alert.error, .alert.warning) {
    font-weight: bold;
    border: 1px solid;
    border-radius: 4px;
}

.alert.success { border-color: green; }
.alert.error { border-color: red; }
.alert.warning { border-color: orange; }

登入後複製
<button>





<pre class="brush:php;toolbar:false">/* Button styles with low specificity */
:where(button, input[type="button"], input[type="submit"]) {
    font-size: 1rem;
    padding: 0.5em 1em;
    background-color: #f0f0f0;
    border: none;
    cursor: pointer;
}

/* Specific override for primary buttons */
button.primary {
    background-color: #007BFF;
    color: white;
}
登入後複製

結果:

CSS Selectors: Unlocking Advanced Selectors for Modern Web Design

瀏覽器支援

  • :is() :where():現代瀏覽器通常支援這些,但請務必檢查最新的相容性資料。
  • :not():廣泛支持,但 :not() 內部的複雜選擇器可能無法在舊版瀏覽器中運作。
  • :has():僅限於最新版本的 Safari,並在其他瀏覽器中提供實驗性支援。謹慎使用或使用polyfills以獲得更廣泛的相容性。

具體考慮因素

  • :is() 和 :where() 從它們所包含的選擇器繼承最高的特異性,而 :where() 本身的特異性為零。
  • :not() 的特殊性在於它所包含的選擇器。
  • :has() 可能會導致複雜的特異性問題,因為它取決於其中的選擇器,但它不會直接添加到特異性分數。

使用進階選擇器的最佳實務

  • 用於 DRY CSS:這些選擇器減少重複,使您的 CSS 更易於維護。
  • 考慮效能:複雜的選擇器會影響效能,尤其是嵌套的選擇器。
  • 舊版瀏覽器的後備:使用 :has() 時,請確保您有後備或使用 @supports 的功能查詢。
  • 避免過度使用:雖然功能強大,但不要讓選擇器過於複雜,因為可讀性是關鍵。

實際應用

  • 樣式元件:使用 :is() 和 :where() 實作不同按鈕類別或表單元素之間的通用樣式。

  • 動態佈局 : :has() 可用於自適應佈局,其中某些元素的存在會改變父元素的樣式。

  • 響應式設計:將這些選擇器與媒體查詢結合,以獲得更動態和上下文感知的設計。

結論

進階 CSS 選擇器可以簡化您的樣式表,使其更乾淨、更有效率。密切注意瀏覽器支持,尤其是 :has(),並明智地使用這些選擇器來增強您的 CSS,而不犧牲可維護性。

祝您編碼愉快,並祝福您的 CSS 具有所需的選擇性! ?


?大家好,我是 Eleftheria,社群經理、 開發人員、公共演講者和內容創作者。

?如果您喜歡這篇文章,請考慮分享。

所有連結 | X | 領英

以上是CSS 選擇器:解鎖現代網頁設計的進階選擇器的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:dev.to
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板