Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
高级CSS—继承
Search
cssrain
September 02, 2014
Technology
140
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
高级CSS—继承
高级CSS—继承
cssrain
September 02, 2014
More Decks by cssrain
See All by cssrain
UED工作流程分享和交流
cssrain
1
480
解读HTML
cssrain
0
160
解读HTML5
cssrain
2
180
基础CSS(1)
cssrain
0
170
基础CSS(2)
cssrain
0
120
高效的CSS
cssrain
0
170
PhoneGap分享和交流
cssrain
0
120
PhoneGap实践
cssrain
0
91
Zen Coding.
cssrain
0
110
Other Decks in Technology
See All in Technology
元銀行員がAIだけでアプリを量産!「バイブコーディング実演セミナー 」
tatsuya1970
0
110
フルAIで個人開発して学んだあれこれ / yuruai vol.1
isaoshimizu
0
120
いまさら聞けない「仕様駆動開発入門」 〜AI活用時代の開発プロセスを考える〜
findy_eventslides
2
200
コミュニティの有益性 ~JAWS Days 2026 での体験を通して~ / The Benefits of a Community ~Through My Experience at JAWS Days 2026~
seike460
PRO
0
270
GitHub Copilot 最新アップデート – 「一歩先」の実践活用術
moulongzhang
5
1.7k
本当の”仕事”を手放せる未来が見えた
mu7889yoon
0
130
時期が悪い!それでもRaspberry Piを買って遊んで活用するには / 20260627-osc26do-rpi-jikigawarui
akkiesoft
0
820
新しいUbuntu/GNOMEが使いたいからXからWaylandへ移行頑張ってるの巻 2026-06-20
nobutomurata
0
160
Multi-Agent並列開発を 安全に回すための技術 / Technology for Safely Multi-Agent Parallel Development
tooppoo
0
180
From Prompt Engineering to Loop Engineering
shibuiwilliam
1
220
AI時代のコスト管理を考えよう〜明日から使える実践AWSノウハウ~
yoshimi0227
0
870
IaC コードを資産へ:AWS CDK 社内ライブラリと横断展開 / aws-summit-japan-2026
gotok365
10
1.6k
Featured
See All Featured
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
1
5.9k
Visualization
eitanlees
152
17k
Thoughts on Productivity
jonyablonski
76
5.2k
How to train your dragon (web standard)
notwaldorf
97
6.7k
Digital Ethics as a Driver of Design Innovation
axbom
PRO
1
330
Designing Powerful Visuals for Engaging Learning
tmiket
1
420
We Are The Robots
honzajavorek
0
250
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
118
120k
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
210
Ten Tips & Tricks for a 🌱 transition
stuffmc
0
140
How to Think Like a Performance Engineer
csswizardry
28
2.7k
Mobile First: as difficult as doing things right
swwweet
225
10k
Transcript
Css Css Css Css继承 CSS CSS CSS CSS
偶也, 偶也, 偶也, 偶也, 我们从文档树 我们从文档树 我们从文档树 我们从文档树 ( (
( (DOM DOM DOM DOM tree tree tree tree) ) ) ) 开始 开始 开始 开始
在我们研究继承性之前 我们需要弄清楚 document document document document tree tree tree tree
我们认为所有的HTML结构为一棵树 一棵树 一棵树 一棵树
文档树结构是由HTML HTML HTML HTML元素 元素 元素 元素组成
文档树我们可以把他理解成家庭关系 家庭关系 家庭关系 家庭关系
一个祖先元素 (暂且这么说吧,发现翻译成根元素是不对的) 连接并牵引出所有的元素 祖先
一个后代元素 后代元素 后代元素 后代元素 牵引出所有元素 但他处于文档树低一级 后代元素 Descendants
我们亦可将 body body body body元素 元素 元素 元素 理解为父元素 父元素
Also, 低一级的ul ul ul ul元素 元素 元素 元素 理解为子元素 子元素
兄弟元素(LI) 和他的兄弟姐妹们 有同一个爸爸 同一个爸爸 同一个爸爸 同一个爸爸(UL) 相对父元素 兄弟姐妹们
Next, Next, Next, Next, 我们得看 我们得看 我们得看 我们得看 CSS CSS
CSS CSS规则 规则 规则 规则
在我们研究继承性之前, 应该需要理解 CSS规则的基本原理.
CSS规则会告诉浏览器 如何去表现 HTML页面中的每个元素的特点
CSS CSS CSS CSS规则 规则 规则 规则由 由 由 由5
5 5 5个要素 个要素 个要素 个要素构成 构成 构成 构成
通过 通过 通过 通过选择器 选择器 选择器 选择器 来选择 来选择 来选择
来选择HTML HTML HTML HTML页面中的 页面中的 页面中的 页面中的 元素 元素 元素 元素 p { color: red; } 选择 选择 选择 选择 选择器 选择器 选择器 选择器
声明块 声明块 声明块 声明块 包含所有的东西当然也包含方括号 p { color: red; }
声明块 声明块 声明块 声明块
声明 声明 声明 声明 告诉浏览器如何在页面中表现已 被选择的元素 p { color: red;
} 声明 声明 声明 声明
属性 属性 属性 属性 p { color: red; } 属性
属性 属性 属性
对应属性的属性值 p { color: red; } 属性值 属性值 属性值 属性值
Now Now Now Now… … … … 什么是 什么是 什么是
什么是 继承 继承 继承 继承? ? ? ?
当有特定的CSS属性 传承 传承 传承 传承给后代 (儿子,孙子and so on)元素就是继承 继承 继承
继承
我们在实践中来看看继承,来看下面的 HTML HTML HTML HTML code code code code <p>
Lorem <em>ipsum</em> dolor sit amet consect etuer. </p>
em元素是包含在p元素里.
看下面的CSS代码 Em元素并没有 单独特定的去定义他 p { color: red; }
在浏览器中查看 P与em元素表现是一样的 <em> <em> <em> <em> 元素 元素 元素 元素
但是为什么em元素也是 红色的 红色的 红色的 红色的? ? ? ? 问题是我并没有给他任何 属性,
囧 。 。 。
因为em元素从P那里 继承了 继承了 继承了 继承了 color:red属性 (做儿子还有点儿好处的)
Why Why Why Why? ? ? ? 为什么要有继承 为什么要有继承 为什么要有继承
为什么要有继承
继承被设计是用来简化开发 简化开发 简化开发 简化开发
否则, 我们需要去单独定义 所有的 所有的 所有的 所有的后代元素,look, p { color: red;
} p em { color: red; }
css文件将会变得非常大 非常大 非常大 非常大, 开发和维护将极为困难 同时 下载速度 下载速度 下载速度 下载速度也将受到很大影响
ALL ALL ALL ALL? ? ? ? 所有的 所有的 所有的
所有的css css css css 属性都会继承吗? 属性都会继承吗? 属性都会继承吗? 属性都会继承吗?
Absolutely Absolutely Absolutely Absolutely no!!! no!!! no!!! no!!!
如果所有CSS属性 都会被继承, 那对开发者来说是非常严重的问题! ! 非常严重的问题! ! 非常严重的问题! ! 非常严重的问题! !
开发者需要去掉 去掉 去掉 去掉 后代元素 并不需要的属性。
What? What? What? What? 例如: 如果border属性 会被继承的话, 将会发生什么 将会发生什么 将会发生什么
将会发生什么? ? ? ?
Okey, 我们来给P元素一个border border border border属性 p { border: 1px solid
red; }
在P元素里的em元素也会有 红色的边框? 红色的边框? 红色的边框? 红色的边框? <em> <em> <em> <em> element
element element element
.幸运的是, .边框并没有被继承, .em元素并没有红色边框 <em> <em> <em> <em> element element element
element
通俗的讲,有利于 有利于 有利于 有利于简化开发的 属性都会被继承
So, So, So, So, 哪些属性会被继承 哪些属性会被继承 哪些属性会被继承 哪些属性会被继承
下面已列出会被继承 会被继承 会被继承 会被继承的 属性…
azimuth, border-collapse, border-spacing, caption-side, color, cursor, direction, elevation, empty-cells, font-family,
font-size, font-style, font-variant, font-weight, font, letter-spacing, line-height, list-style-image, list-style-position, list-style-type, list-style, orphans, pitch-range, pitch, quotes, richness, speak-header, speak- numeral, speak-punctuation, speak, speech- rate, stress, text-align, text-indent, text- transform, visibility, voice-family, volume, white- space, widows, word-spacing
啊,啊,啊! 会有这么多属性哦 最讨厌背东西了
如此简单, 我们来个排列组合, 惊喜的发现, 是有几个主要的属性系列 属性系列 属性系列 属性系列组成
Text Text Text Text相关 相关 相关 相关属性都会被继承
azimuth, border-collapse, border-spacing, caption-side, color, cursor, direction, elevation, empty-cells, font-family,
font-size, font-style, font-variant, font-weight, font, letter-spacing, line-height, list-style-image, list-style-position, list-style-type, list-style, orphans, pitch-range, pitch, quotes, richness, speak-header, speak- numeral, speak-punctuation, speak, speech- rate, stress, text-align, text-indent, text- transform, visibility, voice-family, volume, white- space, widows, word-spacing
List List List List相关 相关 相关 相关属性都会被 属性都会被 属性都会被 属性都会被
继承 继承 继承 继承
azimuth, border-collapse, border-spacing, caption-side, color, cursor, direction, elevation, empty-cells, font-family,
font-size, font-style, font-variant, font-weight, font, letter-spacing, line-height, list-style-image, list-style-position, list-style-type, list-style, orphans, pitch-range, pitch, quotes, richness, speak-header, speak- numeral, speak-punctuation, speak, speech- rate, stress, text-align, text-indent, text- transform, visibility, voice-family, volume, white- space, widows, word-spacing
更重要的是,color属性会被继承
azimuth, border-collapse, border-spacing, caption-side, color, cursor, direction, elevation, empty-cells, font-family,
font-size, font-style, font-variant, font-weight, font, letter-spacing, line-height, list-style-image, list-style-position, list-style-type, list-style, orphans, pitch-range, pitch, quotes, richness, speak-header, speak- numeral, speak-punctuation, speak, speech- rate, stress, text-align, text-indent, text- transform, visibility, voice-family, volume, white- space, widows, word-spacing
font-size font-size font-size font-size? ? ? ? Font-size Font-size Font-size
Font-size会被继承吗 会被继承吗 会被继承吗 会被继承吗
absolutely “yes”. 然而font-size被继承不同于其他的属性
被计算出来的值会被继承 而不是其初始值
在解释font-size如何来继承之前, 我们需要知道font-size 为什么 为什么 为什么 为什么不是直接继承?
让我们来用之前的 一个简单的htm代码实例开始 <p> Lorem <em>ipsum</em> dolor sit amet consect etuer.
</p>
来看下面HTML结构
这里我仅仅 仅仅 仅仅 仅仅只给p元素定义了 font-size属性, 而em并没有单独定义 p { font-size: 80%;
}
Font-size的属性值为80%, 那么em元素的font-size属性值 应该为P P P P的 的 的 的80% 80%
80% 80%
所以解释成文档应该像 下面这样 下面这样 下面这样 下面这样: : : : <em> <em>
<em> <em> element element element element
然而事实却不是这样的, em元素与P元素的大小是一样 <em> <em> <em> <em> 元素 元素 元素 元素
? ? ? ? 那么font-size属性的继承到底 怎样执行的呢
我们来看看三个实例 三个实例 三个实例 三个实例
我们还是使用与之前 一样的 HTML代码: <p> Lorem <em>ipsum</em> dolor sit amet consect
etuer. </p>
欧克,这里的文档结构也是一样的.
Example Example Example Example 1: 1: 1: 1: Pixels Pixels
Pixels Pixels(单位) (单位) (单位) (单位)
我们给p元素的 font-size属性的值为 14px 14px 14px 14px. p { font-size: 14px;
}
Px Px Px Px属性值 属性值 属性值 属性值(14px) (14px) (14px) (14px)会
会 会 会重写 重写 重写 重写 浏览器默认的 浏览器默认的 浏览器默认的 浏览器默认的font-size font-size font-size font-size的值(约为 的值(约为 的值(约为 的值(约为16px 16px 16px 16px)。 )。 )。 )。 新的属性值会被继承。 新的属性值会被继承。 新的属性值会被继承。 新的属性值会被继承。
元素 属性值 计算后的属性值 默认font size 约16px <body> 未单独定义 约 16px
<p> 14px 14px <em> 未单独定义 继承值 = 14px 所以em元素继承了14px属性值.
Example Example Example Example 2: 2: 2: 2: 百分比 百分比
百分比 百分比
给p 元素 font-size属性值为 85% 85% 85% 85%. p { font-size:
85%; }
浏览器默认的 浏览器默认的 浏览器默认的 浏览器默认的font-size font-size font-size font-size值为 值为 值为 值为16px
16px 16px 16px, , , , 那么计算出值为 那么计算出值为 那么计算出值为 那么计算出值为16px x 85% =13.6px
元素 属性值 计算后的属性值 默 认 的 font size 约16px <body>
未单独定义 约16px <p> 85% 16px x 85% = 13.6px <em> 未单独定义 继承属性值 = 13.6px 所以em元素会继承13.6px 这个计算出来的值
Example Example Example Example 3: 3: 3: 3: EMs EMs
EMs EMs
给<p>元素 font-size属性值为 .85em .85em .85em .85em p { font-size: .85em;
}
欧克,我们再来算一算哦 欧克,我们再来算一算哦 欧克,我们再来算一算哦 欧克,我们再来算一算哦 16px x .85em = 13.6px
元素 属性值 计算后的属性值 默认 font size 约 16px <body> 未单独定义
约16px <p> .85em 16px x .85em = 13.6px <em> 未单独定义 继承属性值 = 13.6px 所以 所以 所以 所以em em em em元素继承属性值为 元素继承属性值为 元素继承属性值为 元素继承属性值为 13.6px 13.6px 13.6px 13.6px .
这些实例都太简单了。 在有比较多的标签 而相对复杂的实例里是这样吗?
Example Example Example Example 4: 4: 4: 4:
所有的标签都定义了font-size 单位为百分比的 属性值. body { font-size: 85%; } h1 {
font-size: 200%; } h2 { font-size: 150%; }
浏览器默认的font-size为16px body元素font-size属性值为85% 计算出16px x 85% =13.6px 这个值将被后代继承 后代继承 后代继承 后代继承
除非后代元素重新定义
元素 属性值 计算font-size 默认font size 约16px <body> 85% 16px x
85% = 13.6px <h1> 200% 继承值为 13.6px x 200% = 27.2px <h2> 150% 继承值为 13.6px x 150% = 20.4px <p> 未单独定义 继承值为 = 13.6px <em> 未单独定义 继承值为 = 13.6px font-size font-size font-size font-size属性继承情况如下
使用继承来 使用继承来 使用继承来 使用继承来提高 提高 提高 提高 我们的效率 我们的效率 我们的效率
我们的效率
开发者能用继承性来写出 高效的CSS文件
For example, 我们可以对body元素设置 color, font-size and font-family 属性 body {
color: #222; font-family: arial, helvetica, sans-serif; font-size: 90%; }
所有的后代元素都会继承来自上面对 body的属性设置.
如果需要,您可以重写 重写 重写 重写新的属性。
body { color: #222; font-family: arial, helvetica, sans-serif; font-size: 90%;
} h1, h2, h3 { color: green; } h4, h5, h6 { color: black; }
And,新的font-family font-family font-family font-family属性
body { color: #222; font-family: arial, helvetica, sans-serif; font-size: 90%;
} h1, h2, h3 { color: green; } h4, h5, h6 { color: black; } h1, h2, h3, h4, h5, h6 { font-family: georgia, times, serif; }
And,新的font-size font-size font-size font-size属性
} h1, h2, h3 { color: green; } h4, h5,
h6 { color: black; } h1, h2, h3, h4, h5, h6 { font-family: georgia, times, serif; } h1 { font-size: 200%; } h2 { font-size: 150%; } h3 { font-size: 125%; } #footer { font-size: 90%; }
We We We We’ ’ ’ ’re re re re
done! done! done! done! Connect: : : : Name:Alex E-mail:
[email protected]
Site:http://ued.iciba.com/ QQ:303683080 声明: 本文翻译自http://www.slideshare.net/maxdesign/css-inheritance-a-simple-stepbystep-tutorial?from=ss_embed 作者:Russ Weakley(http://www.slideshare.net/maxdesign/) 本译文仅供技术交流使用,转载请说明出处,禁止从事商业用途