欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > 名人名企 > CSS-0_2 CSS和继承(inherit initial)

CSS-0_2 CSS和继承(inherit initial)

2025/5/15 23:23:57 来源:https://blog.csdn.net/weixin_39241202/article/details/139731961  浏览:    关键词:CSS-0_2 CSS和继承(inherit initial)

文章目录

  • CSS的层叠和继承
    • inherit
    • initial
      • 很多你以为的样式初始值,其实是用户代理样式
    • 碎碎念

CSS的层叠和继承

在上一篇 CSS和层叠、样式优先级 里已经讲过了层叠和优先级之间的关系,但是在CSS中的层叠除了体现在争抢露脸机会的优先级之外,还体现在属性的延续性上


就像这样:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body>
<div class="blue_word"><h1 id="h">我是div1中的文字</h1>
</div>
</body>
</html><style>.blue_word {color: blue;}
</style>

在这里插入图片描述

道友你有没有想过,为什么明明被选中的是外层元素的类选择器,可内部的元素的字体颜色也跟着变了?

事实上这是CSS中的一个性质,我们管他叫继承。对,css中的样式继承

在一些属性没有指明属性值的情况下,css会自动让他应用父元素的对应样式。但并不是所有的属性都会被继承,通常来说只有跟文本有关系的,比如 font-*,color,text-* 等等。以及一些列表相关的属性会被继承

盒模型有关的内容,比如margin、padding、border之类的属性则不会,也不应该被继承

但是如果你硬要让一个不会被继承的属性去继承,那可以使用关键字——inherit



inherit

inherit,本身就是继承的意思,这个关键字简单明了。使用这个关键字后,所指定属性的属性值将会和父元素一致

最常见的用法,是用在统一那些被用户代理样式带偏的特殊标识,比如标签

就像这样:

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><title>Title</title></head><body><p>我是p标签里的内容:<a href="#">我是a标签里面的内容</a></p></body>
</html><style>p{color: green;}p a{text-decoration: none;}
</style>

在这里插入图片描述


我明明希望整个p标签里面的文字都是绿色的,但是由于a标签的用户代理样式为他指定了color属性,所以他不会继承标签的color样式(这不是因为优先级的问题)。我希望a标签里面的字体颜色跟着p标签走,这样我改颜色的时候就不用改两个地方


所以这时候我们不会这样做:

p,p a{color: green;
}
p a{text-decoration: none;
}

而是会这样做:

p{color: green;
}
p a{color:inherit;/*继承p的color属性*/text-decoration: none;
}

他们的效果都是一样的:

在这里插入图片描述



initial

当你希望把某个属性还原到最原始的状态时,可以使用initial关键字

比如说,还是用a标签举例,如果上例变成这样:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body>
<p>我是p标签里的内容:<a href="#">我是a标签里面的内容</a><br><a href="#" id="a2">我是第二个a标签里面的内容</a>
</p>
</body>
</html><style>p{color: green;}p a{color:inherit;text-decoration: none;}#a2{color: initial;}
</style>

前面的部分没有改,但是我们新加入了id值为a2的a标签,并把她的color值初始化(因为id选择器优先级更高,所以这个initial是一定生效的)。那么问题来了,这时候a2的文字应该是什么颜色呢?


我相信会有道友回答蓝色,但事实上,他是黑的:

在这里插入图片描述

为什么会回答蓝色,因为a标签不经过任何处理的情况下就是蓝色字体啊

可你想过没有,a标签的蓝色字体是用户代理样式给他的,而不是说a标签本身就是蓝色字体


initial关键字的作用,是把对应的属性值重置,而不是重置成用户代理样式

他是跟着具体属性走的,跟任何标签都没有关系,color属性的初始值,就是黑色


很多你以为的样式初始值,其实是用户代理样式

如果你对initial的这一特性不了解,那就会对他的一些行为觉得很诡异,比如这个:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body><div>A</div>
</body>
</html><style>div{background: skyblue;}
</style>

在这里插入图片描述

理论上来说,就算我把下面的样式改成这样:

div{display: initial;background: skyblue;
}

我得到的页面也应该是一样的


可结果让人大跌眼镜:

在这里插入图片描述

这看起来就好像她变成了一个 行内元素 一样!


是的,他就是变成了一个行内元素,根据 MDN 的说明,display这个属性的初始值应该是:inline,哪怕是div也不例外

在这里插入图片描述

——https://developer.mozilla.org/zh-CN/docs/Web/CSS/display

你可以理解成 initial 这个关键字针对的是当前这种属性,跟元素无关。事实上不同的标签对css指定样式来说确实没有什么关系,他们对css来说只在标签选择器里起作用而已



碎碎念

  • css的一些属性是可以自动继承的,但是这些属性大都是文本相关和列表相关的属性
  • 你可以通过inherit关键字强制让某个属性继承父元素的值
  • 你可以通过initial关键字把指定的属性重置,这种重置不是重置成用户代理样式





万分感谢您看完这篇文章,如果您喜欢这篇文章,欢迎点赞、收藏。还可以通过专栏,查看更多与【CSS笔记】有关的内容

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词