实例详解CSS的继承性及其应用

限时加码!20+主流AI编程工具免费用 购周边加赠Coding Plan Lite,Claude Code、Cursor等即刻畅享,学习进阶更高效! 阅读详情

所谓CSS的继承是指被包在内部的标签将拥有外部标签的样式性质。继承特性最典型的应用通常发挥在整个网页的样式预设,需要指定为其它样式的部份设定在个别元素里即可。这项特性可以给网页设计者提供更理想的发挥空间。但同时继承也有很多规则,应用的时候容易让人迷惑,donger今天就专门和大家聊聊这方面的应用。

  正文

  CSS是层叠样式表(Cascading Style Sheets)的简称,它的规范代表了互联网历史上一个独特的发展阶段。现在对于从事网页制作的朋友来说,很少没有听说过CSS了吧,因为在制作网页过程中我们经常需要用到。

  CSS允许我们为文档设置更为丰富且便于修改的外观,可以减轻网页设计者的工作负担。这里我们主要想和朋友们一起对CSS的继承性和特殊性进行一点深入的探讨。

 

  一、继承

  CSS的一个主要特征就是继承,它是依赖于祖先-后代的关系的。继承是一种机制,它允许样式不仅可以应用于某个特定的元素,还可以应用于它的后代。例如一个BODY定义了的颜色值也会应用到段落的文本中。下面举例说明:

  样式定义:body{color:red;}

  应用举例代码:

CSS的层叠和继承深入探讨

 

  应用举例效果: 

  这段代码的应用结果是:“CSS的层叠和继承深入探讨”这段话是红颜色的,“层叠和继承”由于应用了strong元素,所以是粗体。这很符合制作者的意图,也是为什么继承是CSS的一部分的原因。

  二、CSS继承的局限性

  在CSS中,继承是一种非常自然的行为,我们甚至不需要考虑是否能够这样去做,但是继承也有其局限性。

  首先,有些属性是不能继承的。这没有任何原因,只是因为它就是这么设置的。举个例子来说:border属性,大家都知道,border属性是用来设置元素的边框的,它就没有继承性。如下图所示,如果继承了边框属性,那么文档看起来就会很奇怪,除非采取另外的措施关掉边框的继承属性。

 

  如上图所示,多数边框类属性,比如象Padding(补白),Margin(边界),背景和边框的属性都是不能继承的。

  三、继承中容易引起的错误

 

  有时候继承也会带来些错误,比如说下面这条CSS定义:

  Body{color:blue}

  在有些浏览器中这句定义会使除表格之外的文本变成蓝色。从技术上来说,这是不正确的,但是它确实存在。所以我们经常需要借助于某些技巧,热缃獵SS定义成这样:

  Body,table,th,td{color:blue}

  这样表格内的文字也会变成蓝色。

  四、多种样式混合应用

  既然有了继承性,那么在样式表中的应用上可能会有些读者搞不清,多个样式表同时应用到一个对象上会发生什么情形呢?先举个简单的例子:

  样式定义:.apple{color:red;}  H1{color:yellow;}

  应用举例代码:<H1 CLASS=”apple”>这儿的苹果好红啊</H1>

  应用举例效果:因为选择符H1和.apple都匹配上面的H1元素,那么到底浏览器会应用哪一个呢?通过在浏览器中观察,我们发现这段文字应用了.apple这个样式,所以它显示的是红色。这是因为两条规则的特殊性不一样,CSS规则必须这样进行处理。

新建一个前端学习qun438905713,在群里大多数都是零基础学习者,大家相互帮助,相互解答,并且还准备很多学习资料,欢迎零基础的小伙伴来一起交流。

  样式表中的特殊性描述了不同规则的相对权重,它的基本规则是:

  统计选择符中的ID属性个数。 
  统计选择符中的CLASS属性个数。 
  统计选择符中的HTML标记名格式。

  最后,按正确的顺序写出三个数字,不要加空格或逗号,得到一个三位数。( 注意,你需要将数字转换成一个以三个数字结尾的更大的数)。相应于选择符的最终数字列表可以很容易确定较高数字特性凌驾于较低数字的。

  以下是一个按特性分类的选择符的列表:

  H1 {color:blue;}            特性值为:1
  P EM {color:purple;}          特性值为:2
  .apple {red;}              特性值为:10 
  P.bright {color:yellow;}          特性值为:11
  P.bright EM.dark {color:brown;}      特性值为:22
  #id316 {color:yellow}          特性值为:100

  从上表我们可以看出#id316具有更高的特殊性,因而它有更高的权重。当有多个规则都能应用于同一个元素时,权重越高的样式将被优先采用。

  五、CSS继承的优先级问题

 

  上面我们讨论了CSS的继承性和特殊性,在特殊性的框架下,被继承的特性值为0,这就意味着任何显示声明的规则将会覆盖其继承样式。因此,不管一条规则具有多高的权重,如果没有其他规则能应用于这个继承元素,那么它也只是个被继承的规则而已,举例说明。

  样式定义:
  
BODY { background:black;}
  LI { color:gray;}
  UL.white { color:white}

  应用举例代码:
<ul>
  <li>举例列表一</li>
  <li>举例列表二</li>
  <li>举例列表三</li>
  <li>举例列表四</li>
</ul>

  应用举例效果:

   

  有些读者可能认为除包含.white类的列表项显示为白色外,其余所有的列表项都应该是灰色的。然而情况并非如此。

  为什么会出现这样的情况呢?因为带选择符LI的显式声明的权值比从UL.white规则那里继承过来的权值要大,所以每个列表项都是灰色的。

  可能有些地方不是很好理解,大家多思考一下就会明白,平时在应用样式表的时候多留意思考一下。

  下面我们再来看一个例子,若给定如下所示的标记,则EM强调文字将会是灰色的,而非黑色,因为EM规则的权值要大于从H1元素继承来的权值:

  样式定义: 
  H1#id316 { color:black;}          特性值为:101
  EM { color:gray;}             特性值为:1

  应用举例代码:
  <H1 ID=”id<?xml:namespace prefix = st1 />316”>深入探讨<EM>CSS的继承性</EM></H1>

  应用举例效果

   

  这是因为第二条EM规则的特性值(1)要比被继承的特性值(0)要大,事实上规定H1#id316的原始特性值(101)对其继承值没有影响,仍旧为0。

  小技巧:

  如果想让H1始终为黑色,而EM文字在其他情况下红色,那么下面的样式表设置就是一个很好的方法:

  H1,H1 EM { color:black;}         特性值为:1,2
  EM { color:red;}             特性值为:1

  给定这个规则后,除在H1元素内的任何EM文字就都是红色,而H1内的EM文字仍旧为黑色,由于其选择符分组,在第一条规则中就有两条有效的规则(一条是对H1的,另一条是对H1 EM的)也就有两个特性值??每条规则一个。

  上面我们讨论了多个样式规则同时应用于同一对象时,哪个规则会被最终应用的一些情况,可能有些细心的读者会说,那STYLE元素呢?对啊,HTML代码中可以直接应用内联样式STYLE的嘛。那么它的特性值如何呢?

  回答是这样的:带有STYLE的元素在CSS1下其特性值为100,尽管类似于#ID316这样的ID选择符的特性值也为100,但在实际应用中,STYLE这一权值会更高一些,因为STYLE元素的值看起来要比多数普通规则的权值大。所以我们可以看出内联样式具有高的特性值,具体的例子我们就不举了,大家可以自己试试。

  六、人为定义CSS继承优先级

  在制作网页的过程中,我们可能想要设置某个规则比其他的规则更重要,CSS中允许这样设置,它们被称为重要规则(important rule)。这是根据其声明的方式和它们的自然属性来命名的。通过在一条规则的分号前插入!important这样一个短语来标记一条重要规则,比如说:

 

  P.apple { color:#red !important; background:white;}

  颜色值#red被标记为!important,而背景色white未被标记,如果需要二条规则都是重要的话,那么每条规则都需要标上!important。

  正确地放置!important的位置是很重要的,否则整条规则将为无效。!important总是放在规则声明的最后,在分号之前。

  标记为!important的规则具有最高的权值,也就是说他没有具体的特性值,但是比其他的权值都要大。需要注意的是,虽然制作者定义的样式比用户定义的样式具有更高权值时,但!important规则恰恰相反:重要的用户定义规则要比制作者定义的样式具有更高权值,即使是标记为!important的重要规则也是如此。

  看了这么多文字介绍后,我们来举个例子看一下:

  样式定义:
  H1 { color:gray !important;}

  应用举例代码:
  <H1 STYLE=”color:black;”>看这儿!</H1>

  应用举例效果:
  !important规则会覆盖内联STYLE属性的内容,所以结果文字是灰色的而不是黑色的。

   

  还有最后一种需要考虑的情况:继承值总是具有特性值0的特点,即使是从带有!important的规则继承的值也是如此,在匹配重要规则的元素之外,重要性也会随之消失,这点是需要我们特别注意的!

CSS继承性、层叠性与权重问题解析 本文主要介绍了 CSS继承性和层叠性,以及权重问题。包括继承性和层叠性的概念,权重一样时以后出现的为准,权重大的优先,没选中权重为 0 遵循就近原则,还指出权重只和 CSS 顺序有关,为深入理解和运用 CSS 提供了重要参考。 阅读详情

相关推荐

举例详解CSS中的继承

CSS的继承是由所使用的样式属性定义的。换句话说,当你查看CSS属性backgruound-color,你会看到一栏「继承性」,也许你几乎没有在意过它,但是它还是十分有用的。什么是CSS继承 每一个元素都是文档树的一部分,除了最顶级的HTML元素,每个元素都有其对应的父级元素,每一个父级元素的CSS属性值都可以被应用到它的子元素中去。 举个栗子,H1标签包含着一个EM标签: EM就是H1标签的子元素,任何H1中继承的CSS属性值会自动在EM标签中生效,比如: CSS Code复制内容到剪贴板 h1{font-size: 120%;}   由于font-size是默认继承的CSS属性,

CSS特性---------继承性

1.2 可继承的常见属性:font-size、font-weight、font-family、font-style、text-indent、text-align。并未对span标签中的文本设置color的相关属性值,根据浏览器的检查结果可知其继承(inherited from div)了父元素div的color属性。当我们添加了非文字控制属性值后,发现span标签并未继承父元素div的height属性,由此可以验证非文字控制属性无法继承。1.1 特性:子元素有默认继承父元素的特点。

giegie0506的博客 868

Css样式表继承性详解+三个案例

前言: 在讲继承性之前,我们得知道什么叫继承。用官方一点的话解释说明:文本相关属性具有继承性,只需要给祖先设置样式,后代所有标签生效。 讲得通俗一点,你肯定听过亲戚朋友跟你说过这样的话:你跟你老爸长得真像,你眼睛真像你老妈。这个就是属于基因里面的继承,你继承了你爸妈的一些相貌特征。你爸妈鼻子很高挺,把你生下来,大概率也会是高鼻梁,这就叫继承。 案例展示1: 我们来看一个继承性最直观的表现 <div class="div1"> <ul>

weixin_45230574的博客 1618

CSSCSS 特性 ② ( CSS 继承性 )

一、CSS 继承性 1、样式的继承性 2、代码示例

让 学习 成为一种 习惯 ( 韩曙亮 の 技术博客 ) 3757

html学习】CSS继承性、层叠性和特殊性

CSS样式具有3个基本特性:继承性、层叠性和特殊性。 继承性说明样式可以相互传递,层叠性说明样式可以相互覆盖,而特殊性则说明样式也可以特殊化处理。 CSS继承性 CSS继承性就是CSS允许结构的外围样式不仅可以应用于某个特定的元素,还可以应用于它包含的、可匹配的标签。 通俗说就是在HTML文档结构中,包含在内部的标签将拥有外部标签的某些样式。 就像java语言的继承一样。子类可以使用父类的方法和属...

qq_43761222的博客 1312

CSS 继承 (Inheritance)

CSS 继承是指某些 CSS 属性如果被设置在父元素上,其值会自动流向(应用到)其所有后代元素(子、孙元素等)的特性。 核心价值:通过将样式声明应用于祖先元素,可以避免在所有后代元素上重复编写相同的代码,使得样式表更简洁、更高效、更易于维护。

Async Cipher 1089

[CSS]CSS继承性、层叠性、权重

CSS像艺术家一样优雅,像工程师一样严谨继承性CSS样式具有继承性,所谓的继承性,就是给某些元素设置样式时,后代元素也会自动继承父类的样式。这叫CSS继承性。比如 color属性设置字体颜色,后代自动继承。CSS的继承特性,一定程度上简化了代码的操作,至少方便了我这类懒癌患者。<!DOCTYPE html> <html> <head> <title>test</title> <me

Feathers的个人笔记 4797

前端CSSCSS继承性

CSS 中的继承性是指某些样式属性可以从父元素传递到子元素。这意味着,当一个元素被赋予某种样式时,该样式同样适用于其所有后代元素,除非这些后代元素明确覆盖了这些样式。CSS继承性有助于减少重复的样式声明,并使得样式更容易维护。

一个做过前端开发的产品经理,经历过睿智产品的折磨导致脱发之后,励志要翻身"农奴"把歌唱,一边打入敌人内部一边持续提升自己,为我们广大开发同胞谋福祉,坚决抵制睿智产品折磨我们码农兄弟! 1217

CSS中哪些属性有继承性

CSS中哪些属性有继承性哪些属性没有继承性? 一、继承性的代码演示(深入理解): <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>CSS有哪些属性有继承性</title>

weixin_45276056的博客 3174

CSS三大特性之继承性

CSS有三大特性,分别是继承性,层叠性,优先级,这里讲解继承性 继承性是指子元素可以继承父元素的属性,例如下面的代码,div中包含2个p标签,1一个span标签,当给div设置字体颜色为红色时,他的子标签会继承父元素的属性,因而会显示红色。 div { color: red; }

安静的对折的专栏 2万+

CSS继承性及层叠性

我们知道,对于面向对象开发语言, 比如:Java、C++、JavaScript、C#等的都有一个非常重要的特性,也就是继承性。那么在CSS中也有这样的特性。CSS继承性CSS中父元素的一些属性能够被其后代元素继承,在这实际开发中非常的重要。先通过一个简单的列子来感知一下CSS继承性。<!DOCTYPE html> <html lang="en"> <head> <meta charset=

darkcode007的博客 775

CSS选择器种类及其继承性

1.标记选择器: 只写标签名,后面不加“<>”; 标签名做选择器会把页面中所有的这个标签都选中; 2.id选择器 每个页面标签都可以增加id属性, 标签的id值必须遵从以下规范;(1)只能由字母、下划线、数字组成 (2)必须是字母开头 (3)不能与标签名同名 (4)尽量使用有意义的单词 如:nav; 注意:(1)任何一个页面不能使用同名id,我们通过实验发现,浏览器会把同名的id都是用...

yangaoyuan1999的博客 1728

CSS复合选择器和CSS层叠性、继承性有哪些内容?

CSS复合选择器和CSS层叠性、继承性有哪些内容?

m0_65111980的博客 1414

05-CSS样式表的继承性和层叠性

本文重点 CSS继承性 CSS的层叠性 计算权重 权重问题大总结 CSS样式表的冲突的总结 权重问题深入 同一个标签,携带了多个类名 !important标记 CSS继承性 我们来看下面这样的代码,来引入继承性: 上方代码中,我们给div标签增加红色属性,却发现,div里的每一个子标签<p>也增加了红色属性。于是我们得到这样的结论: 有一些属性,当给自己设置的时...

JayYuen的博客 3479

CSS样式的继承性和优先级

本文主要内容 CSS继承性 CSS的层叠性 计算权重 权重问题大总结 CSS样式表的冲突的总结 权重问题深入 同一个标签,携带了多个类名 !important标记 1.CSS继承性 &amp;amp;amp;amp;lt;!doctype html&amp;amp;amp;amp;gt; &amp;amp;amp;amp;lt;html&amp;amp;amp;amp;gt; &amp;amp;amp;amp;lt;head&amp;amp;

dweblover的博客 8178

css中有继承性和无继承性的属性

一、无继承性的属性 1、display:规定元素应该生成的框的类型 2、文本属性: vertical-align:垂直文本对齐 text-decoration:规定添加到文本的装饰 text-shadow:文本阴影效果 white-space:空白符的处理 unicode-bidi:设置文本的方向 3、盒子模型的属性:width、height、margin 、margin-top、...

weixin_30299539的博客 1663

css继承性

目录 css继承性是什么? 父元素的属性那些可以被子元素继承,哪些不能呢? css继承性是什么? 在面向对象语言都会存在继承的概念,在面向对象语言中,继承的特点:继承了父类的属性和方法。 那么我们现在主要研究csscss就是在设置属性的。不会牵扯到方法的层面。 css的继承:就...

anzhilan7823的博客 310

CSS三大特性(继承性,层叠性,优先级)

发生的前提是在嵌套关系下,为父级元素设置css样式时,会将一部分可继承的自动继承到子元素上,就相当于俗话说的子承父业★ 文字颜色可以继承★ 文字大小可以继承★ 字体可以继承★ 字体粗细可以继承★ 文字风格可以继承★ 行高可以继承总结:文字的所有属性都可以继承,一下除外标题标签(h1-h6)无法继承文字大小a标签无法继承文字颜色(text-,font-,line-这些元素开头的可以继承,以及color属性)

2201_75404424的博客 2625
上一篇: web前端初学者必须了解10个CSS技巧
下一篇: 网页制作中应用CSS控制文本的主要指令
html基础教程
博客等级 码龄7年 136粉丝 108原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值