CSS 核心知識點全解析:從基礎到實戰應用

大家好!今天這篇文章將系統總結 CSS 的核心知識點,從最基礎的樣式引入到復雜的選擇器應用,再到盒子模型、文本處理等實戰技巧,全程結合代碼示例,讓你輕松掌握 CSS 的精髓。

一、CSS 是什么?為什么需要它?

CSS(層疊樣式表)是用來控制網頁外觀的語言。我們可以把網頁比作 “毛坯房”,HTML 負責搭建 “墻體結構”(標簽),而 CSS 則負責 “裝修”—— 設置顏色、字體、布局等,讓網頁更美觀、易讀。

前端有三大核心技術:

  • HTML(結構層):定義頁面元素
  • CSS(表現層):控制元素樣式
  • JavaScript(行為層):實現交互效果

今天我們重點聚焦 “表現層” 的 CSS。

二、CSS 樣式的引入方式

要讓 CSS 生效,首先要知道如何將樣式 “連接” 到 HTML。常見的引入方式有三種:

1. 外鏈式(推薦)

通過<link>標簽引入外部.css文件,實現 HTML(結構)和 CSS(樣式)的徹底分離,多個頁面可共享同一份樣式,便于維護。

<!-- 在<head>中引入 -->
<link rel="stylesheet" href="./css/common.css">

優點:一次修改,多處生效;減輕 HTML 文件體積。

2. 內嵌式

在 HTML 的<style>標簽內編寫 CSS,樣式僅作用于當前頁面。

<head><style>p { color: red; } /* 所有p標簽文字變紅 */</style>
</head>

適用場景:樣式僅用于當前頁面,且代碼量不大時。

3. 行內式

直接在 HTML 標簽的style屬性中寫樣式,優先級最高,但會導致結構和樣式混雜,不推薦大量使用。

<p style="color: blue; font-size: 20px;">行內樣式</p>

總結:優先使用外鏈式,其次內嵌式,盡量避免行內式。

三、CSS 選擇器:精準定位元素

CSS 選擇器的作用是 “選中” 需要設置樣式的 HTML 元素。就像我們在人群中找人,需要通過 “特征” 定位,選擇器就是元素的 “特征”。

1. 基本選擇器

最常用的基礎選擇器,覆蓋大多數簡單場景。

選擇器語法作用示例
標簽選擇器標簽名選中所有同名標簽p { color: red; }(所有 p 標簽)
類選擇器. 類名選中所有帶該類名的標簽.active { font-size: 20px; }
ID 選擇器#ID 名選中唯一帶該 ID 的標簽(ID 唯一)#logo { width: 100px; }
通配符選擇器*選中所有標簽* { margin: 0; padding: 0; }(清除默認邊距)
并集選擇器選擇器 1, 選擇器 2同時選中多個選擇器的元素p, .box { color: blue; }(p 標簽和.box 類)

2. 高級選擇器

處理更復雜的選擇場景,比如父子關系、狀態變化等。

(1)組合選擇器:處理元素關系
  • E>F:選中 E 的直接子元素F(僅兒子,不含孫子)
    .app>p { color: red; } /* 選中class為app的元素的直接子元素p */
    
  • E F:選中 E 的所有子孫元素F(兒子、孫子都算)
    .app p { background: yellow; } /* 選中app內所有p(包括嵌套的) */
    
  • E+F:選中 E 后面的第一個兄弟元素F
    .first+p { color: blue; } /* 選中class為first的元素后面第一個p */
    
  • E~F:選中 E 后面的所有兄弟元素F
    .first~p { color: green; } /* 選中first后面所有p兄弟 */
    
(2)偽類選擇器:根據元素狀態選擇
  • 鏈接偽類(a 標簽專用):

    a:link { color: pink; } /* 未訪問的鏈接 */
    a:visited { color: red; } /* 已訪問的鏈接 */
    a:hover { color: orange; } /* 鼠標懸浮時 */
    a:active { color: purple; } /* 鼠標點擊未松開時 */
    

    注意順序:link -> visited -> hover -> active,否則可能失效。

  • 表單偽類

    input:enabled { background: white; } /* 可用的輸入框 */
    input:disabled { background: #eee; } /* 禁用的輸入框 */
    input:focus { background: yellow; } /* 光標聚焦的輸入框 */
    input:checked { width: 20px; } /* 被選中的復選框/單選框 */
    
  • 否定偽類:排除特定元素

    .first>input:not(#all) { width: 30px; } /* 選中.first下所有input,除了id為all的 */
    
(3)結構偽類:根據位置選擇
  • E:nth-of-type(n):選中 E 的第 n 個子元素
    ul>li:nth-of-type(2n) { background: blue; } /* 列表中偶數項 */
    ul>li:nth-of-type(2n-1) { background: gray; } /* 列表中奇數項 */
    
  • E:first-of-type:選中 E 的第一個子元素
  • E:last-of-type:選中 E 的最后一個子元素
(4)屬性選擇器:根據屬性值選擇
input[name=username] { background: aqua; } /* name屬性為username的input */
input[type=text] { background: red; } /* type屬性為text的input */
a[href^=http] { color: green; } /* href以http開頭的鏈接 */
a[href$=pdf] { color: red; } /* href以pdf結尾的鏈接 */
(5)偽元素選擇器:創建 “虛擬元素”

不是選中已有元素,而是在元素內部添加虛擬內容(需配合content屬性)

.third::after {content: '添加的文字'; /* 必須有,可空 */display: inline-block; /* 轉為行內塊,可設置寬高 */
}
p::first-letter { color: red; } /* 段落第一個字 */
p::first-line { background: yellow; } /* 段落第一行 */
p::selection { color: white; background: black; } /* 選中的文本樣式 */

四、選擇器優先級:樣式沖突時誰說了算?

當多個選擇器選中同一個元素,且設置了沖突的樣式(比如同時設置 color),誰的樣式會生效?這取決于優先級

優先級規則:

  1. 權重計算:不同選擇器有不同權重,權重高的生效。

    • !important:無窮大(最高級,謹慎使用)
    • 行內樣式(style屬性):1000
    • ID 選擇器:100
    • 類 / 偽類 / 屬性選擇器:10
    • 標簽 / 偽元素選擇器:1
    • 通配符:0

    示例:

    .list>.second { color: blue; } /* 類+類:10+10=20 */
    ul>.second { color: green; } /* 標簽+類:1+10=11 */
    /* 前者權重更高,文字顯示藍色 */
    
  2. 同名選擇器:后寫的覆蓋先寫的。

    p { color: red; }
    p { color: blue; } /* 最終文字為藍色 */
    
  3. 繼承的樣式:優先級低于直接設置的樣式。

五、字體與文本樣式:讓文字更美觀

1. 字體樣式(font-*

控制字體的大小、粗細、類型等。

p {font-size: 16px; /* 字體大小(默認16px) */font-weight: 700; /* 粗細:100-900(400正常,700加粗) */font-style: italic; /* 風格:italic(傾斜)/ normal(正常) */font-family: '微軟雅黑', sans-serif; /* 字體類型(多個備選,逗號分隔) */
}/* 復合屬性:風格 粗細 大小 類型(順序固定,大小和類型必填) */
p { font: italic 700 16px '微軟雅黑'; }

2. 文本樣式(text-*

控制文本的對齊、縮進、裝飾等。

p {text-indent: 2em; /* 首行縮進(1em=當前字體大小) */text-align: center; /* 水平對齊:left/center/right */text-decoration: none; /* 裝飾:underline(下劃線)/ line-through(刪除線)/ none(無) */text-shadow: 1px 1px 2px #999; /* 文本陰影:x偏移 y偏移 模糊半徑 顏色 */line-height: 30px; /* 行高:行與行之間的距離(行高=容器高度時,文本垂直居中) */
}/* 去掉a標簽默認下劃線 */
a { text-decoration: none; }

六、HTML 標簽分類與特性

HTML 標簽按顯示特性可分為三類,理解它們的區別是布局的基礎。

類型特點示例標簽
塊級元素獨占一行;可設置寬高;默認寬度占滿父元素div、p、h1-h6、ul
行內元素不獨占一行;寬高由內容決定;不可設置寬高span、a、i、b
行內塊元素不獨占一行;可設置寬高;寬高由內容決定img、input

如何改變標簽類型?

通過display屬性可以強制改變標簽的顯示類型:

七、HTML盒模型

div { display: inline; } /* 塊級div轉為行內元素 */
a { display: inline-block; } /* 行內a轉為行內塊(可設寬高) */
span { display: block; } /* 行內span轉為塊級元素(獨占一行) */
  1. 內容區(content):元素的文本 / 圖片區域,通過widthheight設置。
  2. 內邊距(padding):內容區與邊框的距離(子元素與父元素的距離)。
  3. 邊框(border):盒子的邊框,可設置粗細、樣式、顏色。
  4. 外邊距(margin):盒子與其他盒子的距離。

常用設置:

.box {width: 200px; /* 內容寬度 */height: 200px; /* 內容高度 *//* 內邊距:上 右 下 左(順時針) */padding: 10px 20px; /* 上下10px,左右20px *//* 邊框:粗細 樣式 顏色 */border: 5px solid red; /* 5px實線紅色邊框 */border-radius: 8px; /* 圓角邊框 *//* 外邊距:上 右 下 左 */margin: 20px; /* 四周20px */
}

兩種盒模型:

  • 標準盒模型(默認):盒子總寬度 = width + 左右 padding + 左右 border + 左右 margin
  • 怪異盒模型:盒子總寬度 = width(包含 content + padding + border) + 左右 margin

通過box-sizing切換:

.box {box-sizing: border-box; /* 怪異盒模型(推薦,避免計算麻煩) */
}

八、CSS 三大特性:層疊、繼承、優先級

  1. 層疊性:多個樣式作用于同一元素時,沖突的樣式按優先級覆蓋,不沖突的樣式同時生效。

    p { color: red; font-size: 16px; }
    p { color: blue; } /* 最終:color: blue; font-size: 16px; */
    
  2. 繼承性:子元素會繼承父元素的某些樣式(主要是文本相關),如text-*font-*colorline-height

    .parent { color: red; font-size: 20px; }
    /* 子元素p會繼承red和20px */
    <div class="parent"><p>我會繼承父元素的樣式</p>
    </div>
    

    例外:a標簽不繼承color,需單獨設置。

  3. 優先級:如前文所述,解決樣式沖突的核心規則。

九、文本溢出處理:內容太多裝不下怎么辦?

當文本內容超過容器寬度 / 高度時,需要優雅處理溢出內容。

1. 單行文本溢出省略

.single-line {width: 300px; /* 固定寬度 */white-space: nowrap; /* 不換行 */overflow: hidden; /* 隱藏溢出內容 */text-overflow: ellipsis; /* 溢出部分顯示省略號 */
}

2. 多行文本溢出省略

.multi-line {width: 300px;display: -webkit-box; /* 彈性盒模型 */-webkit-box-orient: vertical; /* 垂直排列 */-webkit-line-clamp: 3; /* 顯示3行 */overflow: hidden; /* 隱藏溢出 */text-overflow: ellipsis; /* 省略號 */line-height: 24px; /* 行高 */height: 72px; /* 行高*行數(3*24=72) */
}

3. 顯示滾動條

如果希望用戶能看到所有內容,可顯示滾動條:

.scroll {width: 300px;height: 100px;overflow: auto; /* 內容溢出時顯示滾動條 */
}

十、實戰技巧:常用 CSS 屬性

  1. 鼠標樣式cursor: pointer(鼠標懸停時顯示手型,常用于可點擊元素)

    span { cursor: pointer; }
    
  2. 垂直對齊vertical-align(用于行內 / 行內塊元素,如圖片與文字對齊)

    img { vertical-align: middle; } /* 圖片與文字中線對齊 */
    
  3. 清除默認樣式:瀏覽器會給元素設置默認 margin 和 padding,可通過通配符清除

    * { margin: 0; padding: 0; }
    

總結

CSS 是網頁美化的核心,掌握本文的知識點,你就能應對大多數頁面樣式需求。重點在于:

  • 熟練使用選擇器精準定位元素
  • 理解盒子模型的空間計算
  • 掌握文本和字體樣式的設置
  • 靈活處理溢出內容和標簽特性

注意:行內元素和行內塊元素之間會有默認間隙(因 HTML 中的空格 / 換行導致),可通過設置父元素font-size: 0解決。

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

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

相關文章

ClickHouse的學習與了解

什么是ClickHouse&#xff1f; ClickHouse是一個用于聯機分析(OLAP)的列式數據庫管理系統(DBMS)。 在傳統的行式數據庫系統中&#xff0c;數據按如下順序存儲&#xff1a;RowWatchIDJavaEnableTitleGoodEventEventTime#0893543506621Investor Relations12016/5/18 5:19#1903295…

安卓11 12系統修改定制化_____修改系統 解鎖system分區 去除data加密 自由刪減系統應用

在定制化系統中。修改系統分區 解鎖system。讓用戶可以自由刪減應用。這個在定制化服務中比較常見。對于此項修改服務。需要我們了解基礎的分區常識以及常用的幾種基礎修改步驟。 通過博文了解?????? 1??????-----修改rom 解鎖 system 分區有什么意義 2????…

JetPack系列教程(八):PDF庫——讓Android應用也能優雅“翻頁”

JetPack系列教程&#xff08;八&#xff09;&#xff1a;PDF庫——讓Android應用也能優雅“翻頁” 在Android開發的世界里&#xff0c;加載PDF文件一直是個讓人又愛又恨的“小妖精”。愛它&#xff0c;因為PDF是文檔界的“萬能鑰匙”&#xff1b;恨它&#xff0c;因為原生Andr…

Three.js三大組件:場景(Scene)、相機(Camera)、渲染器(Renderer)

上一篇中我們學習了第一個Three.js場景"Hello World"。這一篇就來學習three.js的核心組件。 此圖來源&#xff08;Three.js中文網&#xff09; three.js的核心由三大組件構成&#xff1a;場景(Scene)、相機(Camera)和渲染器(Renderer)。下面我將詳細介紹這三大件的作…

AI幻覺終結之后:GPT-5開啟的“可靠性”新賽道與開發者生存指南

摘要&#xff1a; Sam Altman關于GPT-5將基本終結幻覺的宣告&#xff0c;不僅僅是一次技術升級&#xff0c;它標志著一個“萬物皆可AI&#xff0c;但萬事皆需驗證”的混亂時代的結束。本文將從一個全新的戰略視角出發&#xff0c;探討當“可靠性”取代“創造性”成為AI競賽的核…

ubuntu遠程桌面很卡怎么解決?

服務端方案 完成XRDP的性能優化配置&#xff1a; 1. 首先檢查當前的xrdp.ini文件 grep -n "tcp_send_buffer_bytes" /etc/xrdp/xrdp.ini2. 編輯xrdp.ini文件&#xff0c;修改TCP發送緩沖區大小 sudo sed -i s/#tcp_send_buffer_bytes32768/tcp_send_buffer_bytes4194…

[Linux] Linux系統負載監控 Linux服務管理

目錄 Linux系統負載監控 系統負載介紹 查看系統負載 負載解讀 top 命令 Linux服務管理 systemd 介紹 系統啟動管理進程 基本概念 systemd 架構 unit 類型 查看 unit 列表信息 查看單個 unit 信息 控制系統服務 systemctl 命令 unit 配置文件 例&#xff1a;開發…

vector 手動實現 及遇到的各種細節問題

之前對vector的一些功能使用了一下 接下來手動實現一下vector vector的實現和string還是有不小區別的 有很多地方都有細節的問題不同于string的成員變量一個指針一個size一個capacity的成員變量 vector里面存的是三個迭代器iterator 這的迭代器其實就是模版T的指針 這樣就…

OpenStack Neutron中的L2 Agent與L3 Agent:新手友好指南

引言&#xff1a;云網絡的幕后英雄 在當今的云計算世界中&#xff0c;OpenStack作為開源云平臺的佼佼者&#xff0c;為成千上萬的企業提供了靈活、可擴展的基礎設施服務。而在OpenStack的眾多組件中&#xff0c;Neutron&#xff08;網絡服務&#xff09;扮演著至關重要的角色—…

【自用】JavaSE--特殊文件Properties與XML、日志技術

特殊文件概述使用特殊文件可以存儲多個有關系的數據&#xff0c;作為系統的配置信息屬性文件類似于鍵值對&#xff0c;一一對應存儲數據(比如用戶名與密碼)XML文件存儲多個用戶的多個屬性更適合&#xff0c;適合存儲更復雜的數據Properties注&#xff1a;這個屬性文件的后綴即使…

中本聰思想與Web3的困境:從理論到現實的跨越

一、中本聰思想的核心精髓中本聰通過比特幣白皮書提出的核心思想&#xff0c;可歸納為三大支柱&#xff1a;去中心化貨幣體系目標&#xff1a;擺脫中央機構控制&#xff0c;避免通貨膨脹和政治干預&#xff08;如2008年金融危機暴露的中心化風險&#xff09;。實現路徑&#xf…

Centos 用戶管理

一.創建用戶 在 root賬戶 或 sudo 權限下 1. 創建用戶 useradd xiaoyangzi2.為該用戶設置密碼或修改密碼 passwd xiaoyangzi3. 將用戶加入wheel用戶組 在 CentOS 中&#xff0c;屬于 wheel 組的用戶默認可以使用 sudo 權限。 查看所屬用戶組: groups xiaoyangzi將 xiaoyangzi 加…

C++枚舉算法習題

1. 3的倍數枚舉&#xff08;基礎&#xff09;題目&#xff1a;在之間有10和50多少個數是3的倍數&#xff1f;列舉這些數。 解析&#xff1a;枚舉10到50之間的數&#xff0c;判斷是否能被3整除。優化&#xff1a;計算第一個≥10的3的倍數&#xff08;1234&#xff09;&#xff0…

【SpringBoot系列-01】Spring Boot 啟動原理深度解析

【SpringBoot系列-01】Spring Boot 啟動原理深度解析 大家好&#xff01;今天咱們來好好聊聊Spring Boot的啟動原理。估計不少人跟我一樣&#xff0c;剛開始用Spring Boot的時候覺得這玩意兒真神奇&#xff0c;一個main方法跑起來就啥都有了。但時間長了總會好奇&#xff1a;這…

windows環境下使用vscode以及相關插件搭建c/c++的編譯,調試環境

windows下使用vscode搭建c/c的編譯、運行、調試環境&#xff0c;需要注意的是生成的是xxx.exe可執行文件。另外使用的編譯器是mingw&#xff0c;也就是windows環境下的GNU。 我參考的網址是&#xff1a;https://zhuanlan.zhihu.com/p/1936443912806962622 文章分為2種環境搭建…

標準瓦片層級0~20,在EPSG:4326坐標系下,每個像素點代表的度數

在 EPSG:4326&#xff08;WGS84經緯度坐標系&#xff09; 下&#xff0c;瓦片層級&#xff08;Zoom Level&#xff09;的分辨率以 度/像素 為單位&#xff0c;其計算遵循 TMS Global Geodetic 規范&#xff08;單位&#xff1a;度&#xff09;。以下是 標準層級 0 至 20 的分辨…

Unity高級剔除技術全解析

目錄 ?編輯層級剔除&#xff08;Layer Culling&#xff09;原理詳解 代碼示例 業務應用場景 距離剔除&#xff08;Distance Culling&#xff09;技術細節 進階實現 開放世界優化技巧 視口裁剪&#xff08;Viewport Culling&#xff09;多攝像機協作方案 高級應用場景 …

[Linux] Linux文件系統基本管理

目錄 識別文件系統和設備 Linux 中設備 Linux 文件系統 查看設備和文件系統 lsblk命令 df命令 du命令 案例&#xff1a;查看根文件系統中哪個文件占用了最大空間 環境準備 查找過程 掛載和卸載文件系統 環境準備 掛載文件系統 卸載文件系統 卸載失敗處理 lsof …

如何在 Ubuntu 24.04 Server 或 Desktop 上安裝 XFCE

在 Ubuntu 24.04 上更改當前桌面環境或添加新的桌面環境并不是一項艱巨的任務。大多數流行的 Linux 桌面環境,包括 XFCE,都可以通過默認的 Ubuntu 24.04 LTS 系統倉庫安裝。在本教程中,我們將學習如何使用 Tasksel 工具在 Ubuntu Linux 上安裝和配置 XFCE。 訪問終端并運行…

linux下用c++11寫一個UDP回顯程序

需求&#xff1a;1&#xff09;從2個UDP端口接收數據&#xff0c;并在同樣的端口回顯。echo2&#xff09;多個處理線程&#xff0c;多個發送線程&#xff1b;3&#xff09;使用條件變量喚醒&#xff1b;#include <stack> #include <mutex> #include <atomic>…