CSS之基礎語法一文全解析

CSS之基礎語法一文全解析

    • 一、CSS語法核心結構:選擇器+聲明塊
      • 1.1 基礎語法模板
      • 1.2 關鍵組成部分
    • 二、選擇器全解析:精準定位目標元素
      • 2.1 基礎選擇器(必掌握)
        • 2.1.1 標簽選擇器(類型選擇器)
        • 2.1.2 類選擇器(最靈活)
        • 2.1.3 ID選擇器(唯一性)
      • 2.2 組合選擇器(復雜場景)
        • 2.2.1 后代選擇器(空格分隔)
        • 2.2.2 子代選擇器(>`符號)
        • 2.2.3 并集選擇器(逗號分隔)
      • 2.3 偽類選擇器(動態狀態)
        • 2.3.1 鏈接狀態偽類
        • 2.3.2 結構偽類(表單/列表)
    • 三、屬性值類型:從基礎值到函數表達式
      • 3.1 基礎值類型
        • 3.1.1 顏色值
        • 3.1.2 長度單位
        • 3.1.3 關鍵字
      • 3.2 函數表達式
        • 3.2.1 計算函數`calc()`
        • 3.2.2 自定義變量`var()`(CSS3新特性)
    • 四、聲明規則:層疊性、優先級與簡寫
      • 4.1 層疊性:沖突時的樣式應用規則
      • 4.2 簡寫屬性:簡化代碼
    • 五、代碼組織與最佳實踐
      • 5.1 注釋規范
      • 5.2 導入方式對比
      • 5.3 代碼格式化
    • 六、常見問題與避坑指南
      • 6.1 樣式不生效?
      • 6.2 單位使用誤區
      • 6.3 偽類順序問題

在Web開發中,CSS(層疊樣式表)負責網頁的視覺呈現,其基礎語法是實現精美頁面的基石。本文將系統拆解CSS核心語法體系,并通過實戰案例演示選擇器、屬性、聲明規則等核心知識,幫你建立起扎實的CSS基礎。

一、CSS語法核心結構:選擇器+聲明塊

1.1 基礎語法模板

CSS規則由選擇器聲明塊兩部分組成,語法結構如下:

/* 選擇器 { 聲明塊 } */
h1 {color: red;        /* 屬性: 值; */font-size: 24px;   /* 多個聲明用分號分隔 */
}

1.2 關鍵組成部分

  1. 選擇器:指定樣式作用的HTML元素(如h1.class#id
  2. 聲明塊:包含一組屬性: 值對,用大括號包裹
  3. 屬性:CSS樣式名稱(如colorfont-sizemargin
  4. :屬性對應的有效值(如顏色值、長度單位、關鍵字)
  5. 分號:每個聲明必須以分號結尾(最后一個聲明可省略,但建議保留)

二、選擇器全解析:精準定位目標元素

2.1 基礎選擇器(必掌握)

2.1.1 標簽選擇器(類型選擇器)
  • 語法標簽名 { 樣式 }
  • 作用:選擇所有該標簽的元素
  • 案例:統一設置所有段落字體顏色
    p {color: #666;line-height: 1.6;
    }
    
2.1.2 類選擇器(最靈活)
  • 語法.類名 { 樣式 }(類名以.開頭)
  • 作用:選擇所有class屬性匹配的元素
  • 案例:為按鈕添加樣式
    .btn-primary {background-color: #4a90e2;color: white;padding: 8px 16px;
    }
    
2.1.3 ID選擇器(唯一性)
  • 語法#id名 { 樣式 }(ID名以#開頭)
  • 作用:選擇id屬性匹配的唯一元素(每個ID在頁面中只能出現一次)
  • 案例:定位導航欄
    #header-nav {background-color: #f5f5f5;padding: 20px;
    }
    

2.2 組合選擇器(復雜場景)

2.2.1 后代選擇器(空格分隔)
  • 語法父元素 子元素 { 樣式 }
  • 作用:選擇父元素內部的所有指定子元素
  • 案例:僅設置列表中的鏈接樣式
    ul li a {text-decoration: none;color: #333;
    }
    
2.2.2 子代選擇器(>`符號)
  • 語法父元素>子元素 { 樣式 }
  • 作用:選擇父元素的直接子元素
  • 案例:僅設置第一級列表項
    .menu>li {display: inline-block;margin-left: 15px;
    }
    
2.2.3 并集選擇器(逗號分隔)
  • 語法選擇器1, 選擇器2 { 樣式 }
  • 作用:同時選擇多個元素
  • 案例:統一標題和段落的字體
    h1, h2, p {font-family: 'Arial', sans-serif;
    }
    

2.3 偽類選擇器(動態狀態)

2.3.1 鏈接狀態偽類
  • :hover:鼠標懸停時
  • :active:鼠標點擊時
  • :visited:已訪問鏈接
  • 案例:交互按鈕效果
    .link-btn:hover {color: #4a90e2;text-decoration: underline;
    }
    
2.3.2 結構偽類(表單/列表)
  • :first-child:第一個子元素
  • :nth-child(n):第n個子元素(n可為數字、公式如2n
  • :checked:選中的單選/多選框
  • 案例:隔行變色表格
    table tr:nth-child(even) {background-color: #f8f8f8;
    }
    

三、屬性值類型:從基礎值到函數表達式

3.1 基礎值類型

3.1.1 顏色值
  • 十六進制#fff(簡寫)、#ffffff(完整)
  • RGBrgb(255, 0, 0)(十進制)、rgba(255, 0, 0, 0.5)(帶透明度)
  • 預定義名稱redbluetransparent(透明)
  • 案例:漸變色背景(需配合background-image屬性)
    .hero {background-image: linear-gradient(to bottom, #4a90e2, #2196f3);
    }
    
3.1.2 長度單位
  • 絕對單位px(像素,最常用)、pt(點,印刷場景)
  • 相對單位
    • em:相對于父元素字體大小(如1.2em
    • rem:相對于根元素(<html>)字體大小(響應式設計常用)
    • %:百分比(如width: 50%
  • 案例:響應式字體
    html { font-size: 16px; } /* 根字體大小 */
    body { font-size: 0.875rem; } /* 14px */
    
3.1.3 關鍵字
  • 方向:leftrighttopbottom
  • 對齊方式:centerjustify(兩端對齊)、baseline(基線對齊)
  • 顯示方式:block(塊級元素)、inline(行內元素)、none(隱藏)
  • 案例:水平居中元素
    .container {margin: 0 auto; /* 上下0,左右自動居中 */width: 960px;
    }
    

3.2 函數表達式

3.2.1 計算函數calc()
  • 作用:動態計算長度(支持+-*/
  • 案例:自適應布局
    .sidebar {width: calc(20% - 20px); /* 20%寬度減去20px邊距 */
    }
    
3.2.2 自定義變量var()(CSS3新特性)
  • 作用:定義可復用的變量(需配合--變量名聲明)
  • 案例:主題色管理
    :root {--primary-color: #4a90e2;
    }
    .button {background-color: var(--primary-color);
    }
    

四、聲明規則:層疊性、優先級與簡寫

4.1 層疊性:沖突時的樣式應用規則

  1. 來源優先級:瀏覽器默認樣式 < 用戶樣式 < 開發者樣式
  2. 選擇器權重(從高到低):
    • ID選擇器(100分)
    • 類選擇器/屬性選擇器/偽類(10分)
    • 標簽選擇器/偽元素(1分)
    • 通配符*(0分)
  • 案例:強制覆蓋樣式(!important)
    .special {color: red !important; /* 最高優先級,慎用 */
    }
    

4.2 簡寫屬性:簡化代碼

  • 字體簡寫font: [font-style] [font-weight] [font-size]/[line-height] [font-family]
    /* 完整寫法 */
    p {font-style: italic;font-weight: bold;font-size: 16px;line-height: 1.5;font-family: 'Times New Roman', serif;
    }
    /* 簡寫 */
    p {font: italic bold 16px/1.5 'Times New Roman', serif;
    }
    
  • 背景簡寫background: [color] [image] [position] [size] [repeat] [attachment]

五、代碼組織與最佳實踐

5.1 注釋規范

  • 模塊注釋(/* 模塊名稱 */)
  • 關鍵代碼注釋(單行或多行)
    /* 導航欄樣式 */
    #nav {background-color: #333; /* 深色背景 */color: white;/* 彈性布局實現水平排列 */display: flex;justify-content: space-around;
    }
    

5.2 導入方式對比

方式語法加載時機兼容性
<link><link rel="stylesheet" href="style.css">頁面加載時并行加載全兼容
@import@import url(style.css);等待頁面加載后加載IE5+(不推薦)

推薦:使用<link>標簽,性能更優且支持媒體查詢:

<link rel="stylesheet" href="desktop.css" media="(min-width: 768px)">

5.3 代碼格式化

  • 縮進:2個空格(避免制表符)
  • 大括號:選擇器后換行,聲明塊每行一個屬性
  • 空格:屬性名與冒號后留一個空格(如color: red

六、常見問題與避坑指南

6.1 樣式不生效?

  • 檢查選擇器是否正確匹配元素(瀏覽器控制臺調試)
  • 確認選擇器權重是否被更高優先級覆蓋(使用!important臨時測試)
  • 檢查屬性是否拼寫錯誤(CSS屬性嚴格區分大小寫嗎?不區分,但建議統一小寫)

6.2 單位使用誤區

  • 百分比相對于父元素計算(如width: 50%是父元素寬度的50%)
  • rem依賴根字體大小,需在<html>標簽設置基準值
  • 避免為font-size使用px以外的單位(可能導致字體模糊)

6.3 偽類順序問題

  • 鏈接偽類必須遵循a:link -> a:visited -> a:hover -> a:active順序(LVHA規則)
    /* 正確順序 */
    a:link, a:visited { color: #333; }
    a:hover { color: #4a90e2; }
    a:active { color: #2196f3; }
    

掌握CSS基礎語法核心在于:

  1. 選擇器精準性:根據場景選擇合適的選擇器(類選擇器優先于ID選擇器)
  2. 聲明簡潔性:善用簡寫屬性和自定義變量(CSS3 var()
  3. 規則層疊性:理解權重計算,合理使用!important
  4. 代碼規范性:統一格式、添加注釋、使用外部樣式表

若這篇內容幫到你,動動手指支持下!關注不迷路,干貨持續輸出!
ヾ(′? ˋ)ノヾ(′? ˋ)ノヾ(′? ˋ)ノヾ(′? ˋ)ノヾ(′? ˋ)ノ

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

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

相關文章

vue 前端動態導入文件 import.meta.glob 導入圖片

背景&#xff1a; 在開發過程中&#xff0c;前端會引入資源文件&#xff0c;這里主要是引入圖片。在開發環境&#xff0c;導入的圖片顯示正常&#xff0c;但是打包部署后&#xff0c;導入的圖片就不能正常顯示。 原因分析&#xff0c;可能有如下幾點&#xff1a; 1.圖片不能顯示…

RocketMQ-Dashboard頁面報Failed to fetch ops home page data錯誤

今天安裝RocketMQ-Dashboard&#xff0c;訪問主頁&#xff0c;頁面彈框提示Failed to fetch ops home page data&#xff0c;F12發現控制臺輸出網絡請求跨域。解決&#xff1a;不要用127.0.0.1訪問&#xff0c;用localhost就不報錯了

0704-0706上海,又聚上了

上次&#xff0c;還是0413&#xff0c;當時寫了一篇&#xff0c;下次相見是何時&#xff1f;也鼓勵自己下次相見是找到工作&#xff08;實習也算&#xff09;&#xff0c;沒想到真找到了&#xff0c;DW App 說到實習&#xff0c;其實沒認真投遞很多&#xff0c;互聯網公司除了阿…

【win電腦-程序CMD自啟動問題-開機就自啟動-查找原因-解決方式】

【win電腦-程序CMD自啟動問題-開機就自啟動-查找原因-解決方式】 1&#xff0c;情況說明&#xff1a;2&#xff0c;問題描述1-這是什么窗口 2-原因分析&#xff1a;3-我的努力-嘗試解決&#xff1a;1&#xff0c;任務管理器中查看狀態2&#xff0c;查看啟動文件夾3&#xff0c;…

Go語言實現雙Token登錄的思路與實現

Go語言實現雙Token登錄的思路與實現 引言 在現代Web應用中&#xff0c;身份認證是保障系統安全的重要環節。傳統的單Token認證方式存在一些安全隱患&#xff0c;如Token泄露可能導致長期風險。雙Token機制&#xff08;Access Token Refresh Token&#xff09;提供了更好的安全…

映射阿里云OSS(對象存儲服務)

參考&#xff1a;使用阿里云進行OSS對象存儲&#xff08;超詳細&#xff09; 一文掌握SpringBoot注解之Component 知識文集(1) ConfigurationProperties注解原理與實戰 1.配置屬性類 AliOssProperties package com.sky.properties;import lombok.Data; import org.springframe…

Java操作word實戰

文章目錄簡介段落頁頭與頁腳頁碼表格圖片批注文本框目錄圖表簡介 Word編程最重要的類是org.apache.poi.xwpf.usermodel.XWPFDocument。涉及的東西十分復雜。而且Apache poi操作word的技術非常不成熟。代碼中本身有很多bug。 ??Maven的依賴為 <dependency><groupId&…

【Flask】flask中get方法和post方法區別

對于post和get在我以前的認知下一直認為是&#xff1a; 前端發送給后端就稱為post 前端需要從后端返回就用get 但是在開發過程中發現了不僅僅如此 區別 GET 意圖&#xff1a;獲取&#xff08;GET&#xff09; 信息。你只是想讀取服務器上已經存在的資源&#xff0c;你不打算改變…

Linux sudo升級

應對 Linux sudo 本地提權漏洞&#xff1a;離線升級 Sudo 到安全版本 一、引言 在 Linux 系統中&#xff0c;sudo&#xff08;superuser do&#xff09;是一個非常重要的工具&#xff0c;它允許授權用戶以超級用戶&#xff08;root&#xff09;的權限執行命令。然而&#xff0c…

ubuntu 6.8.0 安裝xenomai3.3

通過以下步驟來獲取和準備 Linux 內核 6.8.0 的源碼&#xff0c;并應用 Xenomai 補丁&#xff1a; 1. 下載 Linux 內核 6.8.0 源碼 你可以從 The Linux Kernel Archives 下載 Linux 內核 6.8.0 的源碼。以下是具體步驟&#xff1a; 訪問內核官方網站&#xff1a; 打開 The Li…

drawRect 觸發時機

在 iOS 開發中&#xff0c;UIView 的 drawRect: 方法&#xff08;或其底層 CALayer 的繪制&#xff09;的觸發時機是由系統控制的&#xff0c;開發者不能直接調用這些方法。以下是觸發視圖繪制的完整機制&#xff1a;一、核心觸發時機 1. 視圖首次顯示 當視圖被添加到視圖層級時…

1.1_4 計算機網絡的分類

在這個視頻中我們會探討計算機網絡的分類&#xff0c;從不同的角度可以對計算機網絡進行不同的分類&#xff0c;我們會從分布范圍、傳輸技術、拓撲結構、使用者和傳輸介質這樣的幾個維度進行討論&#xff0c;在這門課當中需要注意的是標紅色的幾個分類&#xff0c;其他的類別簡…

03每日簡報20250705

每日簡報 新聞簡報&#xff1a;AI行業信任危機浮現 標題&#xff1a;知名科技作者Alberto Romero發文《我對AI行業正在失去所有信任》 來源&#xff1a;The Algorithmic Bridge&#xff08;算法之橋&#xff09; 核心內容&#xff1a; 作者立場&#xff1a;長期支持AI技術…

Python 多版本環境治理理念驅動的系統架構設計:三維治理、四級隔離、五項自治 原則

Python 多版本與開發環境治理架構設計-CSDN博客 Python 多版本治理理念&#xff08;Windows 平臺 零基礎友好&#xff09;-CSDN博客 Python 多版本開發環境治理&#xff1a;理論架構與實踐-CSDN博客 【終極實戰】Conda/Poetry/Virtualenv/Pipenv/Hatch 多工具協同 AnacondaP…

C++ 第四階段 文件IO - 第一節:ifstream/ofstream操作

目錄 一、文件 IO 的基本概念 二、文件流的基本操作 1. 打開文件 2. 關閉文件 3. 檢查文件是否成功打開 三、文本文件的讀寫操作 1. 寫入文本文件&#xff08;ofstream&#xff09; 2. 讀取文本文件&#xff08;ifstream&#xff09; 四、二進制文件的讀寫操作 1. 寫…

容聲W60以光水離子科技實現食材“主動養鮮”

炎炎夏日&#xff0c;孩子沉迷電視手機屏幕&#xff0c;視力堪憂&#xff1f;高價買回的“超級食物”羽衣甘藍、車厘子&#xff0c;幾天就蔫了&#xff1f;切開的西瓜放進冰箱&#xff0c;卻怕沾染細菌&#xff1f;7月5日&#xff0c;容聲冰箱“WILL養鮮 高能一夏”新品發布會給…

力扣面試150(13/150)

7.3 380. O(1) 時間插入、刪除和獲取隨機元素 實現RandomizedSet 類&#xff1a; RandomizedSet() 初始化 RandomizedSet 對象bool insert(int val) 當元素 val 不存在時&#xff0c;向集合中插入該項&#xff0c;并返回 true &#xff1b;否則&#xff0c;返回 false 。bool…

需要scl來指定編譯器的clangd+cmake在vscode/cursor開發環境下的配置

最近cursor更新了插件商店&#xff0c;只能使用默認它魔改的c/c插件&#xff08;基于clangd的&#xff09;&#xff0c;手頭剛好在折騰一個cmake工程&#xff0c;試試水嘗試直接配置在cursor上可以編譯運行。 主要是本地環境使用scl來管理gcc/g&#xff0c;所以在配置過程中需要…

docker離線/在線環境下安裝elasticsearch

如果想離線安裝docker、redis、gninx、mysql可參照下面這個。 離線環境下&#xff0c;docker安裝redis、ngnix、mysql 獲取離線包 方式1 找一個能上網的環境&#xff0c;下載elasticsearch的鏡像&#xff0c;然后將這個鏡像導出 docker pull docker.elastic.co/elasticsear…

響應式編程入門教程第一節:揭秘 UniRx 核心 - ReactiveProperty - 讓你的數據動起來!

響應式編程入門教程第一節&#xff1a;揭秘 UniRx 核心 - ReactiveProperty - 讓你的數據動起來&#xff01;-CSDN博客 響應式編程入門教程第二節&#xff1a;構建 ObservableProperty&#xff1c;T&#xff1e; — 封裝 ReactiveProperty 的高級用法-CSDN博客 今天我們來聊聊…