Web前端: :is(通用選擇器)

:is(通用選擇器)

????????CSS中的 :is() 選擇器是?個功能強?的偽類選擇器,它?于簡化復雜的選擇器,特別是在處理多個相似的選擇器時。:is() 選擇器接受 ?個選擇器列表作為參數,然后匹配列表中任何?個選擇器所選中的元素。

:is() 選擇器核心概念

基本語法

:is(selector1, selector2, ..., selectorN) {/* 樣式規則 */
}

核心特性

  1. 簡化選擇器列表:將多個選擇器組合成一個規則

  2. 容錯機制:忽略無效選擇器而不使整個規則失效

  3. 優先級計算:采用參數列表中最高的優先級值

  4. 嵌套支持:可以嵌套使用多個?:is()?選擇器

對比傳統方法與?:is() 方法?

/* 傳統方法 - 冗長且重復 */
header h1, 
header h2, 
header h3, 
section h1, 
section h2, 
section h3 {color: #3498db;
}/* :is() 方法 - 簡潔高效 */
:is(header, section) :is(h1, h2, h3) {color: #3498db;
}

示例:

1、合并多個選擇器
如果你想為多個不同的元素應?相同的樣式,可以使? :is() 來簡化選擇器:
:is(h1, h2, h3, .special) {font-weight: bold;
}
2、簡化復雜的選擇器
:is() 也可以?來簡化嵌套的選擇器,使代碼更易讀:
article :is(h1, h2, h3) {color: darkblue;
}
這將選擇 article 元素內部的所有 h1h2h3 元素,并將它們的?本顏?設置為深藍?。
3、結合偽類
:is() 可以與偽類結合使?:
:is(a, button):hover {background-color: yellow;
}
這將會選擇所有 a 元素和 button 元素在懸浮狀態下,為它們設置??背景。

完整演示示例

<!DOCTYPE html>
<html lang="zh-CN">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>CSS :is() 通用選擇器深度解析</title><style>* {box-sizing: border-box;margin: 0;padding: 0;}body {font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;line-height: 1.6;color: #333;background: linear-gradient(135deg, #1a2a6c, #b21f1f, #1a2a6c);padding: 20px;min-height: 100vh;}.container {max-width: 1200px;margin: 0 auto;background-color: rgba(255, 255, 255, 0.95);border-radius: 15px;box-shadow: 0 10px 30px rgba(0, 0, 0, 0.3);overflow: hidden;}header {background: linear-gradient(to right, #3498db, #2c3e50);color: white;padding: 2rem;text-align: center;border-bottom: 5px solid #2980b9;}h1 {font-size: 3rem;margin-bottom: 1rem;text-shadow: 2px 2px 4px rgba(0, 0, 0, 0.3);}.subtitle {font-size: 1.5rem;opacity: 0.9;max-width: 800px;margin: 0 auto;}.content {display: flex;flex-wrap: wrap;padding: 30px;gap: 30px;}.explanation, .demo {flex: 1;min-width: 300px;background: white;border-radius: 10px;padding: 25px;box-shadow: 0 5px 15px rgba(0, 0, 0, 0.1);}h2 {color: #2c3e50;border-bottom: 3px solid #3498db;padding-bottom: 10px;margin-bottom: 20px;font-size: 2rem;}h3 {color: #3498db;margin: 15px 0 10px;}.code-block {background: #2c3e50;color: #ecf0f1;padding: 15px;border-radius: 8px;font-family: 'Courier New', monospace;margin: 15px 0;overflow-x: auto;}.comment {color: #95a5a6;}.selector {color: #e74c3c;}.property {color: #3498db;}.value {color: #2ecc71;}/* :is() 選擇器演示 */:is(section, article, aside) :is(h2, h3) {color: #e74c3c;border-left: 4px solid #e74c3c;padding-left: 10px;}:is(.demo-container, .explanation) p {line-height: 1.8;margin-bottom: 15px;}:is(.card, .note) {background: #f9f9f9;border-radius: 8px;padding: 15px;margin: 15px 0;border-left: 4px solid #3498db;}.priority-demo :is(#high-priority, .medium-priority) p {background-color: #2ecc71;color: white;padding: 10px;border-radius: 4px;}/* 優先級演示 */.priority-demo #high-priority p {background-color: #e74c3c;}/* 容錯機制演示 */:is(.valid, :invalid-selector) p {background-color: #9b59b6;color: white;padding: 10px;border-radius: 4px;}.demo-container {display: grid;grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));gap: 20px;margin-top: 20px;}.demo-box {background: #f8f9fa;border: 1px solid #ddd;border-radius: 8px;padding: 20px;text-align: center;transition: transform 0.3s, box-shadow 0.3s;}.demo-box:hover {transform: translateY(-5px);box-shadow: 0 8px 15px rgba(0, 0, 0, 0.1);}.demo-box h3 {margin-top: 0;color: #2c3e50;}footer {text-align: center;padding: 20px;background: #2c3e50;color: white;margin-top: 30px;border-top: 5px solid #3498db;}.browser-support {display: flex;justify-content: center;gap: 20px;flex-wrap: wrap;margin-top: 15px;}.browser {background: #34495e;padding: 10px 20px;border-radius: 30px;font-weight: bold;}@media (max-width: 768px) {.content {flex-direction: column;}h1 {font-size: 2.2rem;}}</style>
</head>
<body><div class="container"><header><h1>CSS `:is()` 通用選擇器</h1><p class="subtitle">簡化CSS選擇器,減少代碼冗余,提高可維護性</p></header><div class="content"><div class="explanation"><h2>什么是 :is() 選擇器?</h2><p><strong>:is()</strong> 偽類函數接受一個選擇器列表作為參數,并選擇該列表中任意一個選擇器可以選擇的元素。這對于以更緊湊的形式編寫大型選擇器非常有用。</p><div class="card"><h3>核心優勢</h3><ul><li><strong>簡化代碼</strong>:減少選擇器列表中的重復</li><li><strong>容錯機制</strong>:忽略無效選擇器而不破壞整個規則</li><li><strong>優先級處理</strong>:采用參數列表中最高的優先級值</li><li><strong>嵌套支持</strong>:支持多層嵌套使用</li></ul></div><h3>語法示例</h3><div class="code-block"><span class="comment">/* 傳統方式 */</span><br>.main <span class="selector">header</span> <span class="selector">h1</span>,<br>.main <span class="selector">section</span> <span class="selector">h1</span>,<br>.main <span class="selector">article</span> <span class="selector">h1</span> {<br>&nbsp;&nbsp;<span class="property">color</span>: <span class="value">#e74c3c</span>;<br>}<br><br><span class="comment">/* 使用 :is() */</span><br>.main <span class="selector">:is(header, section, article)</span> <span class="selector">h1</span> {<br>&nbsp;&nbsp;<span class="property">color</span>: <span class="value">#e74c3c</span>;<br>}</div><h3>優先級規則</h3><p>:is() 的優先級由其參數列表中優先級最高的選擇器決定:</p><div class="code-block"><span class="comment">/* 優先級 = ID選擇器 (1,0,0) */</span><br><span class="selector">:is(#header, .main-header)</span> { }<br><br><span class="comment">/* 優先級 = 類選擇器 (0,1,0) */</span><br><span class="selector">:is(.header, div)</span> { }</div></div><div class="demo"><h2>實際演示</h2><h3>簡化標題樣式</h3><p>以下標題樣式通過 :is() 統一設置:</p><div class="demo-container"><section class="demo-box"><h2>Section 標題</h2><p>這個標題應用了 :is() 設置的樣式</p></section><article class="demo-box"><h2>Article 標題</h2><p>這個標題應用了 :is() 設置的樣式</p></article><aside class="demo-box"><h3>Aside 子標題</h3><p>這個子標題同樣應用了 :is() 樣式</p></aside></div><h3>優先級演示</h3><div class="priority-demo"><div id="high-priority" class="demo-box"><h3>ID 選擇器</h3><p>這個元素有 ID 選擇器,優先級更高</p></div><div class="medium-priority demo-box"><h3>類選擇器</h3><p>這個元素只有類選擇器</p></div></div><h3>容錯機制演示</h3><div class="demo-container"><div class="valid demo-box"><h3>有效選擇器</h3><p>這個元素使用了有效的選擇器</p></div><div class="demo-box"><h3>普通元素</h3><p>這個元素沒有特殊樣式</p></div></div><div class="note"><h3>瀏覽器支持情況</h3><p>:is() 選擇器在現代瀏覽器中得到良好支持:</p><div class="browser-support"><div class="browser">Chrome 88+</div><div class="browser">Firefox 78+</div><div class="browser">Safari 14+</div><div class="browser">Edge 88+</div></div></div></div></div><footer><p>CSS :is() 通用選擇器演示 | 使用現代CSS簡化您的樣式表</p><p>提示::is() 選擇器可以替代 :matches() 和 :any()(已棄用)</p></footer></div>
</body>
</html>

效果展示:

關鍵特性演示說明

  1. 簡化選擇器:使用?:is(section, article, aside) :is(h2, h3)?統一設置不同容器中的標題樣式

  2. 優先級規則:在優先級演示中,ID選擇器(#high-priority)比類選擇器(.medium-priority)具有更高優先級

  3. 容錯機制:在容錯演示中,:is(.valid, :invalid-selector)?規則中的無效選擇器被忽略,但有效部分仍然應用

  4. 實際應用:整個頁面的內容區域、卡片和筆記框樣式都使用了?:is() 選擇器來簡化代碼

這個演示展示了?:is() 選擇器如何顯著簡化CSS代碼,提高可讀性和可維護性,同時保持強大的選擇能力。現代瀏覽器對它的支持良好,使其成為現代Web開發中一個實用的工具。

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/913605.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/913605.shtml
英文地址,請注明出處:http://en.pswp.cn/news/913605.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【學習筆記】網絡設備(華為交換機)基礎知識 24 —— 以太網子接口基礎知識

**總結&#xff1a;分享華為交換機以太網子接口基礎知識&#xff1a;包含子接口的簡介、功能、分類以及二層以太網子接口配置終結子接口、三層以太網子接口配置終結子接口和檢查配置結果的相關命令 ** 一、子接口的概念 1、子接口的簡介以太網子接口&#xff1a;?是通過協議和…

在Docker中安裝nexus3(作為maven私服)

1. 為什么我不推薦安裝nexus2&#xff1f; 有兩個原因&#xff1a;&#xff08;1&#xff09;nexus2安裝麻煩&#xff0c;nexus3安裝更方便 &#xff08;2&#xff09;Nexus 3相對于Nexus 2進行了一些重要的改進和增強。它引入了新的存儲引擎、更多的倉庫類型支持、改進的權限…

一、MySQL 8.0 之《EXPLAIN ANALYZE 執行計劃》

文章目錄一、MySQL EXPLAIN ANALYZE 執行計劃指南主要功能實際執行性能分析詳細的執行統計性能瓶頸識別與普通 EXPLAIN 的區別使用場景查詢優化問題診斷總結二、EXPLAIN ANALYZE 執行計劃樣例分析執行順序解讀逐行詳細解釋第 7 行 (最內層)第 6 行第 5 行第 4 行第 3 行第 2 行…

Google I/O Extended :2025 Flutter 的現狀與未來

大家好&#xff0c;我是 Flutter GDE 郭樹煜&#xff0c;Github GSY 項目的維護人&#xff0c;今天主要分享的內容是「Flutter 的現狀與未來」&#xff0c;可能今天更多會是信息科普類型的內容&#xff0c;主要是分享關于 Flutter 的現狀與未來 現狀 其實 Flutter 從開源到現在…

軟考(軟件設計師)數據庫原理:事務管理,備份恢復,并發控制

數據庫事務管理與備份恢復 事務&#xff08;Transaction&#xff09; 是數據庫管理系統中執行的一個不可分割的工作單元&#xff0c;它包含一組 SQL 操作&#xff0c;這些操作要么全部成功執行&#xff0c;要么全部不執行。 事務的四大特性&#xff08;ACID&#xff09;&…

【牛客刷題】相遇

文章目錄 一、題目介紹1.1 題目描述1.2 輸入描述1.3 輸出描述1.4 示例二、解題思路2.1 核心算法設計2.2 性能優化關鍵2.3 算法流程圖三、解法實現3.1 解法一:基礎實現3.1.1 初級版本分析3.2 解法二:優化版本(推薦)3.2.1 優化版本分析一、題目介紹 1.1 題目描述 街道可以看…

uni-app 下拉搜索多選 支持自己創建數據

組件 /components/selectmul.vue <template><view class="multi-select-container"><view class="input-dropdown-container"><view class="" v-if="selectlist&&selectlist[0]"><text class=&qu…

nmon使用方法

安裝方法 方法1&#xff1a; 最簡單方法&#xff1a; #dnf install nom 驗證 執行命令&#xff1a; #nmon 方法2&#xff1a; 下載安裝包安裝&#xff0c;下載地址 官網&#xff1a;nmon and njmon | Site / Download 或者&#xff1a;https://sourceforge.net/project…

Google AI 剛剛開源 MCP 數據庫工具箱,讓 AI 代理安全高效地查詢數據庫

每周跟蹤AI熱點新聞動向和震撼發展 想要探索生成式人工智能的前沿進展嗎&#xff1f;訂閱我們的簡報&#xff0c;深入解析最新的技術突破、實際應用案例和未來的趨勢。與全球數同行一同&#xff0c;從行業內部的深度分析和實用指南中受益。不要錯過這個機會&#xff0c;成為AI領…

數學建模的一般步驟

歸納編程學習的感悟&#xff0c; 記錄奮斗路上的點滴&#xff0c; 希望能幫到一樣刻苦的你&#xff01; 如有不足歡迎指正&#xff01; 共同學習交流&#xff01; &#x1f30e;歡迎各位→點贊 &#x1f44d; 收藏? 留言?&#x1f4dd; 青春由磨礪而出彩&#xff0c;人生因奮…

【web安全】SQLMap 參數深度解析:--risk 與 --level 詳解

目錄 簡介 一、--risk 參數&#xff1a;測試風險控制 1. 基本定義 2. 各級別詳細對比 risk1 (默認) risk2 risk3 3. 使用建議 二、--level 參數&#xff1a;測試深度控制 1. 基本定義 2. 各級別詳細對比 level1 (默認) level2 level3 level4 level5 3. 技術實…

YOLO在自動駕駛交通標志識別中的應用與優化【附代碼】

文章目錄YOLO在自動駕駛交通標志識別中的應用與優化引言1. YOLO算法概述1.1 YOLO的核心思想1.2 YOLO的演進2. 交通標志識別的挑戰2.1 數據集特性2.2 性能指標要求3. YOLO模型優化策略3.1 數據增強改進3.2 注意力機制集成3.3 針對小目標的改進4. 完整實現示例4.1 模型訓練代碼4.…

開源鴻蒙(OpenHarmony)桌面版全面解析:架構適配、設備支持與開發實戰

摘要:深度剖析OpenHarmony 4.0+桌面版的技術演進,揭秘其在X86/國產芯片設備的落地實踐,附源碼獲取與開發板實戰指南 一、OpenHarmony桌面版架構突破 1.1 跨平臺內核適配 開源鴻蒙通過 多內核混合架構 實現全場景覆蓋: X86架構:集成Linux內核適配層(kernel/linux),支持…

【WEB】Polar靶場 11-15題 詳細筆記

目錄 十一.爆破 PHP的基本語法 變量與常量 數據類型 流程控制 函數 文件操作 數據庫交互 1.substr() 函數 2. intval() 函數 十二.XFF X-Forwarded-For&#xff08;簡稱XFF&#xff09; 十三.rce1 shell 命令分隔符 isset()函數 preg_match_all()函數 ${IFS}…

導診系統的科室和癥狀詞庫如何擴展?

要擴展導診系統的科室和癥狀詞庫&#xff0c;可以通過以下幾種方式實現&#xff1a;1. 直接擴展科室定義&#xff08;推薦&#xff09;在初始化代碼中直接添加新的科室及對應癥狀&#xff1a;# 擴展后的科室定義 depts [Department("內科", ["發熱", &quo…

通過Prompt生成互動式網頁HTML案例探索(二)

之前提到了一些【通過Claude 生成圖片的prompt集錦&#xff08;一&#xff09;】&#xff0c;本篇沿著試著用prompt生成互動式網頁 文章目錄 1 什么是互動式網頁&#xff1f;1.1 一個&#x1f330;1.1 核心能力列舉1.3 部署方式 2 猜測秘塔AI搜索生成HTML的Prompt3 mozi大佬&am…

暑假讀書筆記第四天

今日文章&#xff1a; 小林coding&#xff1a;什么是軟中斷&#xff1f; 目錄軟中斷軟中斷概述軟中斷類型如何定位軟中斷 CPU 使用率過高的問題&#xff1f;其他: 往期打卡 軟中斷 中斷是系統用來響應硬件設備請求的一種機制&#xff0c;操作系統收到硬件的中斷請求&#xf…

跨平臺的ARM 和 x86 Docker 鏡像:匯編語言實驗環境搭建

一、安裝和配置 Docker 1.安裝 Docker 官網鏈接&#xff1a;https://www.docker.com/ 以Debian(Ubuntu)系統為例: #安裝依賴包 sudo apt-get update sudo apt-get install -y ca-certificates curl gnupg lsb-release#添加 Docker 官方 GPG 密鑰 sudo mkdir -p /etc/apt/keyr…

【前端知識】HTML頁面渲染:底層原理與技術實現剖析

HTML頁面渲染&#xff1a;底層原理與技術實現剖析HTML頁面渲染&#xff1a;底層原理與技術實現剖析渲染引擎的核心工作流程深度解析渲染關鍵階段1. 解析與構建DOM&#xff08;Document Object Model&#xff09;2. 構建CSSOM&#xff08;CSS Object Model&#xff09;3. 渲染樹…

Catmull-Rom平滑多段線在奇異點處的扭曲問題(1)

Catmull-Rom在奇異點處的扭曲問題 引言 在計算機圖形學和動畫中&#xff0c;我們經常需要在已知點之間創建平滑的過渡。Catmull-Rom樣條是一種流行的插值方法&#xff0c;它以簡單直觀的方式生成經過所有控制點的平滑曲線。本文將深入探討Catmull-Rom插值的原理、實現和應用。…