百分之四十的人都做错的一道 CSS 面试题

更新日期: 2022-02-11阅读: 853标签: 面试题

前天的啥时候在微头条放了一道关于 css 选择器权重的面试题,只有两个答案,但是 40% 的人都回答错了,今天就来详细地看看。

<style>
 .box h1#title { color:red }
 #box h1.title { color:blue }
</style>
<div id="box" class="box">
 <h1 id="title" class="title"> fly63前端网</h1>
</div>

正确的答案:文字应该是蓝色。

这是一道关于 css 选择器权重相关的面试题,今天就来学习学习 css 选择器权重如何计算?

css 选择器权重

如果两组选择器都定位到同一元素,且对同一属性设置不同的样式,此时到底使用的是哪个样式,就需要通过选择器权重来决定到底使用的是哪个样式?

具体的样式继承顺序应该为:

选中且设置 !important 的 > 权重高的 > 权重相同位置靠后的 > 来自继承的。

一个选择器的优先级可以由四部分计算得分:

  • 千位:如果声明在 style 的属性里,则该部分得一分。
  • 百位:选择器包含 id 选择器,则该位得一分。
  • 十位:选择器包含类、属性选择器和伪类,则该位得一分。
  • 个位:选择器包含标签、伪元素选择器,则该位得一分。

举例:

#header p.content.active
/*
选择器权重计算过程:
千位:0 。样式没有定义在 style 中 ,所以千位为 0
百位:1。有一个 id 选择器。
十位:2。有两个类选择器。
个位:1。包含一个标签。
最终权重值为:0121
*/

实例1:p 标签内的文字应该是什么颜色?

<p> fly63前端网</p>
<style>
 p { color:red }
 body { color:blue !important }
</style>

正确答案:红色。

解析:上述只有 p 标签选中到对应 p 元素了,body 它是属于 p 的父级元素,所以是属于继承的,来自继承的权重是最低的,所以文字是红色。

实例2:a 标签文字会继承父级样式还是会使用浏览器默认颜色?

<a href="#">前端人</a>
<style>
 body { color:red !important }
</style>

正确答案:蓝色。

解析:虽然 a 标签没有设置样式,但是浏览器会有内置的默认颜色,使用调试工具可以看到:


按照权重规则来计算:

a:-webkit-any-link -> 0011
body                       -> 0001

所以浏览器会优先使用内置默认的文字颜色。

实例3:40% 都做错的面试题。

<style>
 .box h1#title { color:red }
 #box h1.title { color:blue }
</style>
<div id="box" class="box">
 <h1 id="title" class="title"> fly63前端网</h1>
</div>

正确答案:蓝色。

解析:

.box h1#title
/*
选择器权重计算过程:
千位:0 。样式没有定义在 style 中 ,所以千位为 0
百位:1。有一个 id 选择器。
十位:1。有 1 个类选择器。
个位:1。包含一个标签。
最终权重值为:0111
*/
#box h1.title
/*
选择器权重计算过程:
千位:0 。样式没有定义在 style 中 ,所以千位为 0
百位:1。有一个 id 选择器。
十位:1。有 1 个类选择器。
个位:1。包含一个标签。
最终权重值为:0111
*/

上述两个选择器的权重都是 0111。

css 选择器权重相同的时候,继承靠后面的样式。所以 h1 标签会继承后面的样式是蓝色。

上面这三个实例题都是非常典型的例子,可以对应着实例,好好理解上边的 css 权重介绍,内容总结性比较强。

来自:https://www.toutiao.com/a7050703688301658660

链接: https://www.fly63.com/article/detial/11131

史上最全的Javascript面试题总结(内附答案)

近年来,从事JavaScript的程序员越来越多,JavaScript的曝光率也越来越高,如果你想转行试试JavaScript,不妨收下这份面试题及答案,没准用得上。当然,如果针对这些问题,你有更棒的答案,欢迎移步至评论区。

高级前端面试题汇总

面试的公司分别是:阿里、网易、滴滴、今日头条、有赞、挖财、沪江、饿了么、携程、喜马拉雅、兑吧、微医、寺库、宝宝树、海康威视、蘑菇街、酷家乐、百分点和海风教育。以下是面试题汇总

web前端常见的面试题,基础知识点

web前端常见的面试题:包括:HTML 常见题目、CSS类的题目、JavaScript类的题目、面试官爱问的问题。原来公司工作流程是怎么样的,如何与其他人协作的?如何夸部门合作的?你遇到过比较难的技术问题是?你是如何解决的?

前端面试题汇总(主要为Vue)

毕业之后就在一直合肥小公司工作,没有老司机、没有技术氛围,在技术的道路上我只能独自摸索。老板也只会画饼充饥,前途一片迷茫看不到任何希望。于是乎,我果断辞职,在新年开工之际来到杭州,这里的互联网公司应该是合肥的几十倍吧。。。。

js常见面试题

javascript的typeof返回哪些数据类型;例举3种强制类型转换和2种隐式类型转换?split() join() 的区别; 数组方法pop() push() unshift() shift();IE和标准下有哪些兼容性的写法

Js字符串类面试题

解析 URL Params 为对象;模板引擎实现;转化为驼峰命名;查找字符串中出现最多的字符和个数;字符串查找请使用最基本的遍历来实现判断字符串 a 是否被包含在字符串 b 中

35道必须要清楚的 React面试题

虚拟 DOM (VDOM)是真实 DOM 在内存中的表示。UI 的表示形式保存在内存中,并与实际的 DOM 同步。这是一个发生在渲染函数被调用和元素在屏幕上显示之间的步骤,整个过程被称为调和。函数组件和类组件当然是有区别的

23 个 Vue.js 初级面试题

使用渐进式框架的代价很小,从而使现有项目(使用其他技术构建的项目)更容易采用并迁移到新框架。 Vue.js 是一个渐进式框架,因为你可以逐步将其引入现有应用,而不必从头开始重写整个程序。

AJAX原理及常见面试题

AJAX 即 Asynchronous Javascript And XML(异步JavaScript和XML),是指一种创建交互式网页应用的网页开发技术。AJAX 是一种用于创建快速动态网页的技术。它可以令开发者只向服务器获取数据(而不是图片,HTML文档等资源)

12道vue高频原理面试题,你能答出几道?

本文分享 12 道 vue 高频原理面试题,覆盖了 vue 核心实现原理,其实一个框架的实现原理一篇文章是不可能说完的,希望通过这 12 道问题,让读者对自己的 Vue 掌握程度有一定的认识(B 数),从而弥补自己的不足,更好的掌握 Vue

点击更多...

内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!