CSS 繼承 (Inheritance)

一、核心概念

CSS 繼承是指某些 CSS 屬性如果被設置在父元素上,其值會自動流向(應用到)其所有后代元素(子、孫元素等)的特性。

核心價值:通過將樣式聲明應用于祖先元素,可以避免在所有后代元素上重復編寫相同的代碼,使得樣式表更簡潔、更高效、更易于維護。


二、可繼承的常見屬性

1. 文本

/* 文本與字體相關 (Text & Font) */
color;                              /* 文本顏色 */
font-family;                        /* 字體系列設置 */
font-size;                          /* 字體大小 */
font-style;                         /* 字體樣式(如斜體) */
font-variant;                       /* 字體變體(如小型大寫字母) */
font-weight;                        /* 字體粗細(如粗體) */
font;                               /* 字體縮寫屬性 */
letter-spacing;                     /* 字符間距 */
line-height;                        /* 行高 */
text-align;                         /* 文本對齊方式 */
text-indent;                        /* 首行縮進 */
text-transform;                     /* 文本轉換(如大寫) */
word-spacing;                       /* 單詞間距 */
text-shadow;                        /* 文本陰影 */
font-size-adjust;                   /* 字體大小調整 */
font-stretch;                       /* 字體拉伸 */
font-kerning;                       /* 字體字距調整 */
text-decoration-color;              /* 文本裝飾顏色 */
text-decoration-line;               /* 文本裝飾線型 */
text-decoration-style;              /* 文本裝飾樣式 */
text-decoration-thickness;          /* 文本裝飾粗細 */
text-emphasis-color;                /* 文本強調顏色 */
text-emphasis-style;                /* 文本強調樣式 */
text-underline-offset;              /* 下劃線偏移 */
text-underline-position;            /* 下劃線位置 */
white-space;                        /* 空白處理方式(如pre) */
hyphens;                            /* 連字符控制 */
line-break;                         /* 換行規則 */
overflow-wrap;                      /* 溢出換行(如break-word) */
quotes;                             /* 引號樣式定義 */
direction;                          /* 文本方向(如rtl) */
unicode-bidi;                       /* Unicode雙向算法設置 */

2. 列表

list-style-type;                    /* 列表標記類型(如disc) */
list-style-position;                /* 列表標記位置(如inside) */
list-style;                         /* 列表樣式縮寫(除image部分外) */

3. 表格

/* 表格相關 (Table) */
border-collapse;                    /* 表格邊框合并方式 */
border-spacing;                     /* 表格邊框間距 */
caption-side;                       /* 表格標題位置 */
empty-cells;                        /* 空單元格顯示方式 */
table-layout;                       /* 表格布局算法 */

4.視覺與交互

/* 視覺與交互 (Visual & Interaction) */
visibility;                         /* 元素可見性 */
cursor;                             /* 鼠標光標樣式 */
caret-color;                        /* 輸入光標顏色 */

5.其他

page;                               /* 分頁媒體設置 */
speak;                              /* 語音合成閱讀方式 */
voice-family;                       /* 語音合成聲音家族 */
volume;                             /* 語音合成音量 */
pitch;                              /* 語音合成音調 */
stress;                             /* 語音合成重音 */
richness;                           /* 語音合成音色豐富度 */
speak-punctuation;                  /* 語音合成標點閱讀方式 */
speak-numeral;                      /* 語音合成數字閱讀方式 */

三、不可繼承的常見屬性

這些屬性通常與盒模型定位背景相關。它們只影響元素自身,如果希望后代元素擁有相同樣式,必須顯式聲明。

1. 盒模型屬性(Layout & Box Model)

/* 顯示與定位 (Display & Positioning) */
display;                            /* 顯示類型 */
position;                           /* 定位方式 */
float;                              /* 浮動方向 */
clear;                              /* 清除浮動 */
z-index;                            /* 堆疊順序 */
clip;                               /* 裁剪區域 *//* 尺寸屬性 (Dimensions) */
width;                              /* 元素寬度 */
height;                             /* 元素高度 */
min-width;                          /* 最小寬度 */
min-height;                         /* 最小高度 */
max-width;                          /* 最大寬度 */
max-height;                         /* 最大高度 *//* 外邊距 (Margin) */
margin;                             /* 外邊距縮寫 */
margin-top;                         /* 上外邊距 */
margin-right;                       /* 右外邊距 */
margin-bottom;                      /* 下外邊距 */
margin-left;                        /* 左外邊距 *//* 內邊距 (Padding) */
padding;                            /* 內邊距縮寫 */
padding-top;                        /* 上內邊距 */
padding-right;                      /* 右內邊距 */
padding-bottom;                     /* 下內邊距 */
padding-left;                       /* 左內邊距 *//* 邊框屬性 (Border) */
border;                             /* 邊框縮寫 */
border-top;                         /* 上邊框 */
border-right;                       /* 右邊框 */
border-bottom;                      /* 下邊框 */
border-left;                        /* 左邊框 */
border-width;                       /* 邊框寬度 */
border-style;                       /* 邊框樣式 */
border-color;                       /* 邊框顏色 */
border-radius;                      /* 邊框圓角 *//* 盒模型與溢出 (Box Model & Overflow) */
box-sizing;                         /* 盒模型計算方式 */
overflow;                           /* 溢出處理縮寫 */
overflow-x;                         /* 水平溢出處理 */
overflow-y;                         /* 垂直溢出處理 *//* 彈性布局 (Flexbox) */
flex;                               /* 彈性項目伸縮縮寫 */
flex-grow;                          /* 彈性項目放大比例 */
flex-shrink;                        /* 彈性項目縮小比例 */
flex-basis;                         /* 彈性項目初始大小 */
flex-direction;                     /* 彈性容器主軸方向 */
flex-wrap;                          /* 彈性項目換行 */
justify-content;                    /* 主軸對齊方式 */
align-items;                        /* 交叉軸對齊方式 */
align-content;                      /* 多行對齊方式 */
order;                              /* 彈性項目順序 */
align-self;                         /* 單個項目交叉軸對齊 *//* 網格布局 (Grid Layout) */
grid;                               /* 網格布局縮寫 */
grid-template;                      /* 網格模板縮寫 */
grid-template-columns;              /* 網格列定義 */
grid-template-rows;                 /* 網格行定義 */
grid-auto-columns;                  /* 自動網格列大小 */
grid-auto-rows;                     /* 自動網格行大小 */
grid-auto-flow;                     /* 自動放置算法 */
grid-column;                        /* 網格列位置 */
grid-row;                           /* 網格行位置 */
justify-self;                       /* 單個項目主軸對齊 *//* 間隙屬性 (Gap) */
gap;                                /* 網格間隙縮寫 */
column-gap;                         /* 列間隙 */
row-gap;                            /* 行間隙 */

2. 背景與外觀(Background & Appearance)

/* 背景屬性 (Background) */
background;                         /* 背景縮寫 */
background-color;                   /* 背景顏色 */
background-image;                   /* 背景圖像 */
background-repeat;                  /* 背景重復方式 */
background-position;                /* 背景位置 */
background-size;                    /* 背景尺寸 */
background-attachment;              /* 背景附著方式 */
background-clip;                    /* 背景裁剪區域 */
background-origin;                  /* 背景定位區域 *//* 視覺效果 (Visual Effects) */
box-shadow;                         /* 盒子陰影 */
opacity;                            /* 不透明度 */
filter;                             /* 濾鏡效果 */
backdrop-filter;                    /* 背景濾鏡 *//* 變換效果 (Transforms) */
transform;                          /* 變換效果 */
transform-origin;                   /* 變換原點 *//* 過渡動畫 (Transitions & Animations) */
transition;                         /* 過渡效果縮寫 */
transition-property;                /* 過渡屬性 */
transition-duration;                /* 過渡持續時間 */
transition-timing-function;         /* 過渡時間函數 */
transition-delay;                   /* 過渡延遲時間 */
animation;                          /* 動畫效果縮寫 */
animation-name;                     /* 動畫名稱 */
animation-duration;                 /* 動畫持續時間 */
animation-timing-function;          /* 動畫時間函數 */
animation-delay;                    /* 動畫延遲時間 */
animation-iteration-count;          /* 動畫迭代次數 */
animation-direction;                /* 動畫播放方向 */
animation-fill-mode;                /* 動畫填充模式 */
animation-play-state;               /* 動畫播放狀態 */

3.列表(List)

list-style-image;                   /* 列表標記圖像 */

4.表格(Table)

border-spacing;                     /* 表格邊框間距(部分瀏覽器) */
caption-side;                       /* 表格標題位置(部分瀏覽器) */

5.打印(Print)

page-break-before;                  /* 之前分頁 */
page-break-after;                   /* 之后分頁 */
page-break-inside;                  /* 內部避免分頁 */

6.其他

outline;                            /* 輪廓 */
outline-width;                      /* 輪廓寬度 */
outline-style;                      /* 輪廓樣式 */
outline-color;                      /* 輪廓顏色 */
outline-offset;                     /* 輪廓偏移 */
vertical-align;                     /* 垂直對齊方式 */
visibility;                         /* 可見性(部分情況) */
cursor;                             /* 光標樣式(部分瀏覽器) */
resize;                             /* 尺寸調整 */
appearance;                         /* 原生外觀控制 */

重要提示background?不繼承是一個常見誤區。父元素設置了背景圖或背景色,子元素默認是透明的(transparent),所以會“透出”父元素的背景,看起來像是繼承了,實則沒有。


四、控制繼承的關鍵字

CSS 提供了四個特殊的關鍵字來顯式地控制繼承行為,它們可以作為任何 CSS 屬性的值。

1.?inherit?- 顯式繼承

強制元素獲取其父元素該屬性的計算值

.parent {border: 2px solid green;padding: 20px;
}.child {border: inherit; /* .child 的邊框會和 .parent 一樣:2px solid green */padding: inherit; /* .child 的內邊距也會變成 20px */
}

使用場景:通常用于強制繼承那些本身不可繼承的屬性(如?border,?padding)。

2.?initial?- 重置為初始值

將屬性設置為它的默認初始值(由 CSS 規范定義)。

.parent {color: red;font-weight: bold;
}.child {color: initial; /* 顏色被重置為默認值 (通常是 black) */font-weight: initial; /* 字體粗細被重置為默認值 (normal) */
}

使用場景:撤銷從父元素或用戶代理樣式表繼承來的樣式,將其“恢復出廠設置”。

3.?unset?- 智能重置

行為取決于屬性本身:

  • 如果該屬性是可繼承的,其行為等同于?inherit

  • 如果該屬性是不可繼承的,其行為等同于?initial

.parent {color: red; /* 可繼承屬性 */border: 2px solid blue; /* 不可繼承屬性 */
}.child {color: unset; /* 等同于 inherit,會變成 red */border: unset; /* 等同于 initial,邊框會消失 (初始值為 none) */
}

使用場景:一個“萬能”重置值,非常實用。

4.?revert?- 還原為瀏覽器樣式

將屬性值還原到瀏覽器默認的樣式表(用戶代理樣式表)所設定的值。

h1.child {font-size: revert; /* 會恢復成瀏覽器默認的 2em,而不是繼承父元素的字號 */font-weight: revert; /* 會恢復成瀏覽器默認的 bold */
}

使用場景:撤銷所有作者樣式(你寫的 CSS),回退到瀏覽器的基本樣式。


五、總結與實踐技巧

關鍵字行為適用場景
inherit強制從父元素繼承計算值讓不可繼承的屬性(如邊框)也能繼承
initial將屬性重置為它的默認初始值清除所有樣式(繼承的和自己設置的),回到初始狀態
unset是繼承屬性則inherit,不是則initial智能重置,常用在 CSS Reset 中
revert將屬性還原為瀏覽器默認樣式表的值撤銷作者樣式,恢復瀏覽器默認樣式

最佳實踐

1.利用繼承簡化代碼:將字體、顏色等全局樣式定義在?<body>?或一個頂層容器上。

body {font-family: system-ui;line-height: 1.5;color: #333;
}

頁面內大部分文本都會自動應用這些樣式

2.理解不可繼承屬性:不要誤以為背景、邊框等會繼承,給子元素設置背景色時記得覆蓋。

3.善用?inherit:當希望按鈕、卡片等組件內部的文字顏色與組件外部一致時,可以使用?color: inherit;,提高組件的可復用性。

4.使用?unset?進行重置:在創建可復用組件時,可以使用?all: unset;?來移除元素的所有默認樣式,然后從頭開始設計,避免外部樣式的干擾。

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

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

相關文章

UGUI源碼剖析(15):Slider的運行時邏輯與編輯器實現

UGUI源碼剖析&#xff08;第十五章&#xff09;&#xff1a;Slider的運行時邏輯與編輯器實現 在之前的章節中&#xff0c;我們已經深入了UGUI眾多核心組件的運行時源碼。然而&#xff0c;一個完整的Unity組件&#xff0c;通常由兩部分構成&#xff1a;定義其在游戲世界中行為的…

【Python】爬蟲html提取內容基礎,bs4

前言 BeautifulSoup也就是bs4,里面功能其實有很多&#xff0c;不過對于爬蟲而言主要掌握一下幾塊就可以了 怎么找標簽&#xff1f;找到標簽后怎么獲取屬性&#xff0c;怎么獲取文本內容如何通過找到的標簽繼續獲取子標簽 安裝 pip install bs4案例 對于找標簽來說&#xf…

組件庫打包工具選型(npm/pnpm/yarn)的區別和技術考量

組件庫打包工具選型&#xff1a;npm/pnpm/yarn的區別與技術考量 一、核心差異概述 組件庫打包工具的選擇&#xff0c;本質是在??依賴管理效率??、??磁盤空間占用??、??Monorepo支持??、??安裝速度??及??幽靈依賴風險??之間做權衡。npm作為Node.js默認工具…

新型APT組織“嘈雜熊“針對哈薩克斯坦能源部門發起網絡間諜活動

感染鏈圖示 | 圖片來源&#xff1a;Seqrite實驗室APT研究團隊 Seqrite實驗室APT研究團隊近日發布了一份深度分析報告&#xff0c;披露了一個自2025年4月起活躍的新型威脅組織"嘈雜熊"(Noisy Bear)。該組織主要針對哈薩克斯坦石油天然氣行業&#xff0c;攻擊手法結合…

OpenCV 圖像直方圖

目錄 一、什么是圖像直方圖&#xff1f; 關鍵概念&#xff1a;BINS&#xff08;區間&#xff09; 二、直方圖的核心作用 三、OpenCV 計算直方圖&#xff1a;calcHist 函數詳解 1. 函數語法與參數解析 2. 基礎實戰&#xff1a;計算灰度圖直方圖 代碼實現 結果分析 3. 進…

Firefox Window 開發流程(四)

1 引言 在進行 Firefox 瀏覽器的二次開發、內核研究或自定義構建之前&#xff0c;最重要的步驟就是拉取源碼并進入 Mozilla 官方提供的開發引導模式。這不僅是所有定制工作的起點&#xff0c;同時也決定了后續開發環境的穩定性與可維護性。本文將從源碼獲取、工具使用、引導腳…

mybatis plus 使用wrapper輸出SQL

在MyBatis-Plus中&#xff0c;Wrapper對象用于構建復雜的查詢條件。雖然MyBatis-Plus本身沒有直接提供從Wrapper對象獲取完整SQL語句的方法&#xff0c;但你可以通過一些間接的方式來獲取生成的SQL片段。以下是如何使用MyBatis-Plus的Wrapper來獲取SQL片段的步驟&#xff1a;?…

第1章:操作系統和計算機網絡

1. 操作系統和計算機網絡組成目標概述1.1. 核心知識操作系統和網絡知識很龐大&#xff0c;大多內容枯燥無味&#xff0c;主功最常用的&#xff0c;符合2/8原則。操作系統&#xff1a;內核、性能、磁盤IO、內存、CPU進程、線程、文件、中斷計算機網絡&#xff1a;OSI七層模型、T…

day27|前端框架學習

1、驗證。前后端連接&#xff0c;authentication2、action&#xff0c;在pinia&#xff0c;管理狀態&#xff0c;處理異步操作&#xff08;API/Firebase&#xff09;。methods。在vue組件&#xff0c;處理組件內部邏輯3、滑動窗口&#xff0c;能有大致思路&#xff0c;但是自己…

單片機啟動文件——數據段重定位,BSS段清零

目錄重定位概念的引入一、數據段重定位1.作用&#xff1a;2.目的&#xff1a;3.自己模擬代碼二、BSS段清零1.作用&#xff1a;2.目的&#xff1a;3.自己模擬代碼三&#xff0c;實現原理重定位概念的引入 單片機中內存段的詳細介紹 在單片機中內存分為了很多不同的區域&#xf…

QT(3)

四、基本組件1. Designer設計師&#xff08;掌握&#xff09;Qt Designer 是 Qt 提供的可視化界面設計工具&#xff0c;支持通過拖拽組件快速構建 GUI 界面&#xff0c;生成的界面文件以 .ui格式保存&#xff08;基于 XML 的標簽語言&#xff09;。??核心功能??&#xff1a…

常用注解:@PostMapping、@RequestBody、@Autowired、@Service、@Mapper

1. PostMapping作用&#xff1a;將方法綁定到 HTTP POST 請求的特定路徑上用法&#xff1a;PostMapping("/login") // 綁定到 POST /login PostMapping("/employees") // 綁定到 POST /employees PostMapping("/users/{id}") …

SoC日志管理

目錄 一、汽車控制器中日志的核心類型 二、日志管理的核心環節與策略 1. 日志采集:確保“全面且不冗余” 2. 日志存儲:平衡“可靠性”與“存儲成本” 3. 日志安全:防止“篡改與泄露” 4. 日志生命周期:符合“法規與成本” 5. 日志工具與實現 三、汽車場景的特殊約束與應對 …

橫評五款開源多智能體框架,AI高手都在用哪個?下一款Manus、Cursor、Devin,誰能撐起來?

Agent 成為共識的速度非常快。但今年 Agent 的真正轉折點在于&#xff1a;多智能體。 從科研自動化到任務編排&#xff0c;從自動開淘寶店到 Vibe 一切&#xff0c;從 AI 瀏覽器到今天的 ChatGPT Agent&#xff0c;一切都是多智能體的味道。 但要真正搭建一個多智能體&#x…

GitHub每日最火火火項目(9.10)

1. Physical-Intelligence / openpi 項目名稱&#xff1a;openpi項目介紹&#xff1a;基于 Python 開發&#xff0c;聚焦于物理智能領域&#xff0c;為相關研究與應用提供支持。Python 在科學計算、人工智能等領域有著廣泛且成熟的生態&#xff0c;借助其豐富的庫&#xff08;如…

2025年滲透測試面試題總結-61(題目+回答)

安全領域各種資源&#xff0c;學習文檔&#xff0c;以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各種好玩的項目及好用的工具&#xff0c;歡迎關注。 目錄 2. 提交過什么漏洞 3. 常用漏洞掃描工具 4. OWASP TOP 10 2021核心變化 5. MySQL寫WebShell權限要求 6.…

高可用消息隊列線程池設計與實現:從源碼解析到最佳實踐

前言在現代分布式系統中&#xff0c;消息隊列處理是核心組件之一。今天我們將深入解析一個高性能、高可用的消息隊列線程池實現——FindMessageQueue&#xff0c;并探討如何將其優化應用于實際項目中。一、核心架構設計1.1 整體架構圖┌───────────────────…

Android App瘦身方法介紹

第一章 安裝包構成深度剖析1.1 APK文件結構解剖APK文件本質是一個ZIP壓縮包&#xff0c;通過unzip -l app.apk命令可查看其內部結構&#xff1a;Archive: app.apkLength Method Size Cmpr Date Time CRC-32 Name -------- ------ ------- ---- ---------- -…

深入淺出遷移學習:從理論到實踐

1. 引言&#xff1a;為什么需要遷移學習&#xff1f;在深度學習爆發的這十年里&#xff0c;我們見證了模型性能的飛速提升 ——ResNet 在圖像分類上突破人類視覺極限&#xff0c;BERT 在 NLP 任務上刷新基準&#xff0c;GPT 系列更是開啟了大語言模型時代。但這些亮眼成果的背后…

嵌入式人別再瞎折騰了!這8個開源項目,解決按鍵/隊列/物聯網所有痛點,小白也能抄作業

嵌入式人別再瞎折騰了&#xff01;這8個開源項目&#xff0c;解決按鍵/隊列/物聯網所有痛點&#xff0c;小白也能抄作業 你是不是也有過這樣的崩潰時刻&#xff1a;想做個按鍵控制&#xff0c;結果長按、連擊、組合鍵的邏輯寫了200行if-else&#xff0c;最后還時不時串鍵&#…