CSS 選擇器介紹

CSS 選擇器介紹

1. 基本概念

CSS(層疊樣式表)是一種用于描述 HTML 或 XML 文檔外觀的語言。通過 CSS,可以控制網頁中元素的布局、顏色、字體等視覺效果。而 CSS 選擇器則是用來指定哪些 HTML 元素應該應用這些樣式的工具。

2. 基本選擇器

  • 元素選擇器(Element Selector)
    根據 HTML 元素名稱來選擇元素。

    p { color: blue; } /* 所有段落文字顏色為藍色 */
    
  • 類選擇器(Class Selector)
    通過 class 屬性值來選擇元素。以點 . 開頭。

    .highlight { background-color: yellow; } /* 具有 highlight 類的元素背景色為黃色 */
    
  • ID 選擇器(ID Selector)
    通過 id 屬性值來選擇唯一的一個元素。以井號 # 開頭。

    #header { font-size: 24px; } /* ID 為 header 的元素字體大小為24像素 */
    
  • 通用選擇器(Universal Selector)
    匹配所有 HTML 元素,使用星號 * 表示。

    * { margin: 0; padding: 0; } /* 所有元素的外邊距和內邊距均為0 */
    

3. 組合選擇器

  • 后代選擇器(Descendant Combinator)
    匹配某個元素的所有后代元素,使用空格分隔。

    div p { color: red; } /* 所有在 div 內部的 p 元素文字顏色為紅色 */
    
  • 子代選擇器(Child Combinator)
    匹配某個元素的直接子元素,使用 > 符號。

    ul > li { list-style-type: none; } /* 無序列表的直接子項 li 元素取消列表符號 */
    
  • 相鄰兄弟選擇器(Adjacent Sibling Combinator)
    匹配緊接在另一個元素后的元素,使用 + 符號。

    h2 + p { font-weight: bold; } /* 跟在 h2 后的下一個 p 元素字體加粗 */
    
  • 一般兄弟選擇器(General Sibling Combinator)
    匹配同一個父元素下的所有同類型兄弟元素,使用 ~ 符號。

    li ~ li { color: green; } /* 所有 li 元素中第二個及以后的字體顏色為綠色 */
    

4. 偽類選擇器

  • :link:visited
    用于鏈接的狀態,分別表示未訪問和已訪問。

    a:link { color: blue; } /* 鏈接初始狀態顏色為藍色 */
    a:visited { color: purple; } /* 訪問過的鏈接顏色為紫色 */
    
  • :hover
    當鼠標懸停在元素上時觸發。

    button:hover { background-color: orange; } /* 懸停時按鈕背景色變為橙色 */
    
  • :active
    表示被激活的元素,通常用于點擊狀態。

    a:active { color: red; } /* 點擊鏈接時顏色為紅色 */
    
  • :focus
    用于表單元素獲得焦點時的狀態。

    input:focus { border: 2px solid blue; } /* 輸入框獲得焦點時邊框變為藍色 */
    
  • :nth-child(n):nth-of-type(n)
    分別匹配第 n 個子元素和第 n 個同類型子元素。

    ul li:nth-child(2) { color: red; } /* 列表中第二個元素文字顏色為紅色 */
    
  • :empty
    匹配沒有內容的元素(不含文本節點)。

    div:empty { display: none; } /* 沒有內容的 div 元素隱藏 */
    

5. 屬性選擇器

  • [attribute]
    匹配具有指定屬性的元素。

    a[href] { color: blue; } /* 所有帶有 href 屬性的鏈接顏色為藍色 */
    
  • [attribute=value]
    匹配屬性值完全匹配的元素。

    img[src="logo.png"] { width: 200px; } /* src 為 logo.png 的圖片寬度設為200像素 */
    
  • [attribute^=value]、[attribute$=value]、[attribute=value]*
    分別匹配屬性值以 value 開頭、結尾和包含 value。

    a[href^="https"] { color: green; } /* href 以 https 開頭的鏈接顏色為綠色 */
    

6. 偽元素選擇器

  • ::before::after
    在元素內容前或后插入內容,常用于添加圖標、引號等。

    blockquote::before { content: "?"; } /* 引用塊前插入引號 */
    
  • ::first-line::first-letter
    分別匹配段落的第一行和第一個字母。

    p::first-line { font-weight: bold; } /* 段落第一行字體加粗 */
    
  • ::selection
    匹配用戶選中的內容。

    ::selection { background-color: lightblue; } /* 選中文本背景色為淺藍色 */
    

7. 高級選擇器

  • :not(selector)
    匹配不滿足指定條件的元素。

    :not(.highlight) { color: gray; } /* 不具有 highlight 類的元素顏色為灰色 */
    
  • :enabled:disabled
    用于表單元素,分別表示啟用和禁用狀態。

    input:disabled { opacity: 0.5; } /* 禁用的輸入框透明度設為0.5 */
    

8. 組合選擇器

  • 組合多個選擇器
    可以通過逗號分隔多個選擇器,同時應用樣式。
    h1, h2, h3 { color: red; } /* 所有 h1、h2、h3 元素顏色為紅色 */
    

9. 優先級與覆蓋

  • 特定選擇符
    使用 !important 提高樣式的優先級。

    .error { color: red !important; } /* 強制應用紅色 */
    
  • 內聯樣式
    直接在 HTML 元素中定義的樣式具有最高優先級。

10. 響應式設計

  • 媒體查詢
    根據設備特性應用不同的樣式。
    @media screen and (max-width: 600px) {nav { display: none; }
    } /* 屏幕寬度小于等于600像素時隱藏導航 */
    

11. CSS 模塊化

  • 導入規則
    使用 @import 導入其他樣式表,但需注意順序和性能。
    @import url('normalize.css'); /* 導入 normalize.css 文件 */
    

12. 常用技巧

  • 重置默認樣式
    通過引入 reset.css 或自定義規則清除瀏覽器默認樣式。

    * { margin: 0; padding: 0; box-sizing: border-box; } /* 設置所有元素的邊距和盒子模型 */
    
  • 使用變量
    CSS 變量(Custom Properties)提高代碼復用性。

    :root {--primary-color: #3498db;
    }
    body { color: var(--primary-color); } /* 使用變量定義主色調 */
    

13. 性能優化

  • 減少計算
    避免復雜的計算,盡可能使用預設值或固定單位。

    width: 50%; /* 避免寫成 calc(100% / 2) */
    
  • 避免過度布局
    確保 CSS 布局結構合理,減少重排和重繪。

14. 兼容性

  • 使用前綴
    為確保舊瀏覽器支持新特性,添加相應的廠商前綴。

    .box {display: flex;display: -webkit-flex; /* Chrome 早期版本 */
    }
    
  • 測試與調試
    使用瀏覽器的開發者工具檢查樣式應用情況,并進行必要的調整。

15. 工具與資源

  • 預處理器
    如 Sass、Less 等,提供變量、嵌套等高級功能。

    $primary-color: #3498db;
    .header { color: $primary-color; }
    
  • 構建工具
    使用Webpack、Gulp等自動化處理 CSS 文件。

  • UI 框架
    Bootstrap、Foundation 等提供現成的組件和布局,加速開發進程。

16. 最佳實踐

  • 代碼規范
    保持代碼整潔,適當分隔功能模塊,添加注釋方便維護。

  • 版本控制
    使用 Git 等工具管理 CSS 文件變更,便于協作與回溯。

通過以上內容的學習和實踐,可以系統地掌握 CSS 的核心概念、高級技巧以及最佳實踐,從而在實際項目中開發出高效、優雅且兼容性良好的網頁樣式。

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

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

相關文章

Vue3父子組件數據同步方法

在 Vue 3 中&#xff0c;當子組件需要修改父組件傳遞的數據副本并同步更新時&#xff0c;可以通過以下步驟實現&#xff1a; 方法 1&#xff1a;使用 v-model 和計算屬性&#xff08;實時同步&#xff09; 父組件&#xff1a; vue <template><ChildComponent v-mo…

el-table中el-input的autofocus無法自動聚焦的解決方案

需求 有一個表格展示了一些進度信息&#xff0c;進度信息可以修改&#xff0c;需要點擊進度信息旁邊的編輯按鈕時&#xff0c;把進度變為輸入框且自動聚焦&#xff0c;當鼠標失去焦點時自動請求更新接口。 注&#xff1a;本例以vue2 element UI為例 分析 這個需求看著挺簡單…

用高斯濺射技術跨越機器人模擬與現實的鴻溝:SplatSim 框架解析

在機器人領域&#xff0c;讓機器人在現實世界中精準執行任務是大家一直追求的目標。可模擬環境和現實世界之間存在著不小的差距&#xff0c;特別是基于 RGB 圖像的操作策略&#xff0c;從模擬轉移到現實時總是狀況百出。 今天咱們就來聊聊 SplatSim 框架&#xff0c;看看它是怎…

【自然語言處理與大模型】如何知道自己部署的模型的最大并行訪問數呢?

當你自己在服務器上部署好一個模型后&#xff0c;使用場景會有兩種。第一種就是你自己去玩&#xff0c;結合自有的數據做RAG等等&#xff0c;這種情況下一般是不會考慮并發的問題。第二種是將部署好的服務給到別人來使用&#xff0c;這時候就必須知道我的服務到底支持多大的訪問…

[FPGA基礎] UART篇

Xilinx FPGA UART 硬件接口使用指南 1. 引言 UART (通用異步收發器) 是一種廣泛使用的串行通信接口&#xff0c;因其簡單、可靠和易于實現而成為 Xilinx FPGA 設計中的常見硬件接口。UART 用于在 FPGA 與外部設備&#xff08;如 PC、微控制器、傳感器等&#xff09;之間進行數…

【Netty4核心原理】【全系列文章目錄】

文章目錄 一、前言二、目錄 一、前言 本系列雖說本意是作為 《Netty4 核心原理》一書的讀書筆記&#xff0c;但在實際閱讀記錄過程中加入了大量個人閱讀的理解和內容&#xff0c;因此對書中內容存在大量刪改。 本系列內容基于 Netty 4.1.73.Final 版本&#xff0c;如下&#xf…

用 PyTorch 和numpy分別實現簡單的 CNN 二分類器

作業用到的知識&#xff1a; 1.Pytorch: 1. nn.Conv2d&#xff08;二維卷積層&#xff09; 作用&#xff1a; 對輸入的多通道二位數據&#xff08;如圖像&#xff09;進行特征提取&#xff0c;通過滑動卷積核計算局部區域的加權和&#xff0c;生成新的特征圖。 關鍵參數&a…

使用n8n構建自動化工作流:從數據庫查詢到郵件通知的使用指南

n8n是一款強大的開源工作流自動化工具&#xff0c;可以幫助你將各種服務和應用程序連接起來&#xff0c;創建復雜的自動化流程。下面我將詳細介紹一個實用的n8n用例&#xff1a;從MySQL數據庫查詢數據并發送郵件通知&#xff0c;包括使用場景、搭建步驟和節點部署方法。 使用場…

Vscode已經打開的python項目,如何使用已經建立的虛擬環境

在 VS Code 中使用已創建的 Conda/Mamba 虛擬環境 pe100&#xff0c;只需以下幾步&#xff1a; 步驟 1&#xff1a;確保虛擬環境已存在 在終端運行以下命令&#xff0c;檢查 pe100 環境是否已正確創建&#xff1a; conda activate pe100 python --version # 應顯示 Python 3…

Volatility工具學習

背景 VMware虛擬機系統hang死&#xff0c;手動重啟無法觸發系統panic&#xff0c;從而不能觸發kdump產生vmcore文件進行原因分析&#xff1b;此種情況下需要手動生成虛擬機內存快照&#xff0c;進而利用Volatility工具分析系統hang死的具體原因。 配置 使用VMware創建虛擬機…

學習筆記(C++篇)--- Day 4

目錄 1.賦值運算符重載 1.1 運算符重載 1.2 賦值運算符重載 1.3 日期類實現 1.賦值運算符重載 1.1 運算符重載 ①當運算符被用于類類型的對象時&#xff0c;C語言允許我們通過通過運算符重載的形式指定新的含義。C規定類類型對象使用運算符時&#xff0c;必須轉換成調用對…

Docker 快速入門教程

1. Docker 基本概念 鏡像(Image): 只讀模板&#xff0c;包含創建容器的指令 容器(Container): 鏡像的運行實例 Dockerfile: 用于構建鏡像的文本文件 倉庫(Repository): 存放鏡像的地方&#xff08;如Docker Hub&#xff09; 2. 安裝Docker 根據你的操作系統選擇安裝方式:…

vue項目中使用tinymce富文本編輯器

vue使用tinymce 文章目錄 vue使用tinymcetinymce富文本編輯器在這里插入圖片描述 一、本文要實現二、使用步驟1.安裝tinymce2.tinymce組件新建3. 在store添加商品詳情的狀態管理4. tinymce組件的引入 tinymce富文本編輯器 提示&#xff1a;以下是本篇文章正文內容&#xff0c;下…

簡單適配torch_npu不支持的ATen算子

簡單適配torch_npu不支持的ATen算子 一、背景說明1.1 PyTorch擴展機制1.2 核心概念二、實現步驟詳解2.1 實現前向、反向傳播算子2.2 編譯生成動態庫2.3 測試驗證程序三、關鍵點解析3.1 設計注意事項3.2 性能優化方向四、驗證結果一、背景說明 1.1 PyTorch擴展機制 PrivateUse1…

同樣的html標記,不同語言的文本,顯示的字體和粗細會不一樣嗎

同樣的 HTML 標記&#xff0c;在不同語言的文本下&#xff0c;顯示出來的字體和粗細確實可能會不一樣&#xff0c;原因如下&#xff1a; &#x1f30d; 不同語言默認字體不同 瀏覽器字體回退機制 CSS 里寫的字體如果當前系統不支持&#xff0c;就會回退到下一個&#xff0c;比如…

基于 Spring Boot 瑞吉外賣系統開發(六)

基于 Spring Boot 瑞吉外賣系統開發&#xff08;六&#xff09; 菜品列表 在系統管理端首頁&#xff0c;單擊左側菜單欄中的“菜品管理”&#xff0c;會在右側打開菜品管理頁面。 請求URL/dish/page&#xff0c;請求方法GET,請求參數page&#xff0c;pageSize。 該菜品列表…

計算機視覺與深度學習 | TensorFlow基本概念與應用場景:MNIST 手寫數字識別(附代碼)

TensorFlow 基本概念 TensorFlow 是一個開源的機器學習框架,由 Google 開發,核心概念包括: 張量(Tensor):多維數組,是數據的基本單位。計算圖(Graph):早期版本中用于描述數據流和計算過程,2.x 默認啟用即時執行(Eager Execution),兼顧靈活性和性能。層(Layers)…

vue+django+LSTM微博輿情分析系統 | 深度學習 | 食品安全分析

文章結尾部分有CSDN官方提供的學長 聯系方式名片 文章結尾部分有CSDN官方提供的學長 聯系方式名片 關注B站&#xff0c;有好處&#xff01; 編號&#xff1a; D031 LSTM 架構&#xff1a;vuedjangoLSTMMySQL 功能&#xff1a; 微博信息爬取、情感分析、基于負面消極內容輿情分析…

RHCE第三次作業 搭建dns的正向解析服務器

server為服務器 client為客戶端 設置主配置文件 在server下&#xff1a; [rootServer ~]#vim /etc/named.conf #進入到配置頁面&#xff0c;并修改 設置區域文件 [rootServer ~]# vim /etc/named.rfc1912.zones 設置域名解析文件 [rootServer named]# cd /var/named…

Windows 同步技術-一次性初始化

組件通常設計為在首次調用時執行初始化任務&#xff0c;而不是加載它們時。 一次性初始化函數可確保此初始化僅發生一次&#xff0c;即使多個線程可能嘗試初始化也是如此。 Windows Server 2003 和 Windows XP&#xff1a; 應用程序必須使用 互鎖函數 或其他同步機制提供自己的…