文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

大多数开发人员无法通过这个简单的CSS面试问题(CSS特异性)

2024-11-30 11:41

关注

给定以下HTML和CSS代码,你知道 test文本的颜色会是什么吗?


    

test

p.abc {
    color: purple;
}
.hello p {
    color: red;
}
.abc {
    color: blue;
}
p {
    color: green;
}

花点时间仔细思考一下

如果你猜测的颜色是红色,那么你是正确的!你也对CSS特异性有着扎实的理解。

事例地址:https://codepen.io/ambroseliew/pen/jOpzXpj

为什么?

如果你没有找到正确答案或者不明白为什么文本颜色是红色的,你可以查看这篇其他文章,在这里我详细讲解了CSS的特异性。

https://medium.com/@ambroseliew1998/stop-writing-important-in-your-css-code-and-do-this-instead-62171f86016f

理解这个概念很重要,因为如果你是一个网页开发者,尤其是前端开发者,这样的概念经常被使用。

攻略指南

但更进一步解释,应用紫色的CSS特异性和应用红色的另一条规则,它们的特异性都是0-0-0-1-1。这是因为它们都有1个类选择器和1个类型选择器。

同时,对于应用蓝色的规则,其CSS特异性为0-0-0-1-0,因为它只有一个类选择器。而应用绿色的规则的CSS特异性为0-0-0-0-1,因为它只有一个类型选择器。

因此,具有最高CSS特异性值的规则是应用紫色的规则和应用红色的其他规则。

但是有两个具有相同CSS特异性值的CSS规则!我们如何知道应该应用哪个?

这就是“层叠”在层叠样式表(CSS)中发挥作用的地方。这意味着最后应用的规则(即位于底部的规则)将被应用。在这种情况下,将应用应用红色的规则。

我们甚至可以进一步添加另一个CSS规则到列表中。

.hello.hello {
    color: pink;
}

是的,你可以堆叠类选择器(和ID选择器)来增加特异性。因此,这条规则的CSS特异性将为0-0-0-2-0。这个值肯定比迄今为止的所有其他规则都要高。

然而,如果你将这个CSS规则添加到目前在codepen中已有的CSS代码中,你会发现文本的颜色仍然是红色!为什么会这样呢?

这是因为直接针对元素的规则总是优先于针对父元素的规则(也称为继承样式)。

因此,在这种情况下,由于这个CSS规则是针对父元素而不是实际的p 标签本身,它会被其他更具体的CSS规则覆盖。是的,应用绿色的CSS规则也会覆盖这个粉色。

来源:大迁世界内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯