看看这两个 CSS 面试题,考察你的基础!

见微知著,本篇文章给大家分享两道有意思的 css 面试题,考察考察你的基础!

看看这两个 CSS 面试题,考察你的基础!

今天在论坛,有看到这样一道非常有意思的题目,简单的代码如下:

First Paragraph

样式如下:

p#a {    color: green;}div::first-line {    color: blue;}

试问,标签

内的文字的颜色,是 green 还是 blue 呢?

立即学习“前端免费学习笔记(深入)”;

有趣的是,这里的最终结果是蓝色,也就是 color: blue 生效了。【推荐学习:css视频教程】

1.png

不对,正常而言,ID 选择器的优先级不应该比伪类选择器高么?为什么这里反而是伪类选择器的优先级更高呢?

并且,打开调试模式,我们定位到

元素上,只看到了 color: green 生效,没找到 div::first-line 的样式定义:

2.png

只有再向上一层,我们找到

的样式规则,才能在最下面看到这样一条规则:

3.png

因此,这里很明显,是

标签继承了父元素

的这条规则,并且作用到了自身第一行元素之上,覆盖了原本的 ID 选择器内定义的 color: green

再进行验证

这里,另外一个比较迷惑的点在于,为什么 ID 选择器的优先级比 ::first-line 选择器更低。

我们再做一些简单的尝试:

下面的 DEMO 展示了 ::first-line 样式和各种选择器共同作用时的优先级对比,甚至包括了 !important 规则:

第 1 段通过标签选择器设置为灰色第 2 段通过类选择器设置为灰色第 3 段通过 ID 选择器设置为灰色第 4 段通过 !important bash 设置为灰色

综上的同时,每一段我们同时都使用了 ::first-line 选择器。

::first-line vs. tag selector

This paragraph ...

::first-line vs class selector

This paragraph color i...

::first-line vs ID selector

This paragraph color is set ...

::first-line vs !important

This paragraph color is ....

p {  color: #444;}p::first-line {  color: deepskyblue;}.p2 {  color: #444;}.p2::first-line {  color: tomato;}#p3 {  color: #444;}#p3::first-line {  color: firebrick;}#p4 {  color: #444 !important;}#p4::first-line {  color: hotpink;}

CodePen Demo -- ::first-line: demohttps://codepen.io/KittyGiraudel/pen/kWobaa/569e082a67400f5fb39a96030d0e9b6c

看看效果:

4.png

可以看到,无论是什么选择器,优先级都没有 ::first-line 高。

究其原因,在于,::first-line 其实是个伪元素而不是一个伪类,被其选中的内容其实会被当成元素的子元素进行处理,类似于 ::before::after 一样,因此,对于父元素的 color 规则,对于它而言只是一种级联关系,通过 ::first-line 本身定义的规则,优先级会更高!

这也是为什么,在 MDN 文档中,更推荐的是双冒号的写法(当然浏览器都支持单冒号的写法)-- MDN -- ::first-line

5.png

再来一题,MDN 的错误例子?一个有意思的现象

说完上面这题。我们再来看看一题,非常类似的题目。

在 MDN 介绍 :not 的页面,有这样一个例子:

/* Selects any element that is NOT a paragraph */:not(p) {  color: blue;}

意思是,:not(p) 可以选择任何不是

标签的元素。然而,上面的 CSS 选择器,在如下的 HTML 结构,实测的结果不太对劲。

p

div
span

h1

结果如下:

6.png

CodePen Demo -- :not pesudo demo

https://codepen.io/Chokcoco/pen/KKZbWjy

意思是,:not(p) 仍然可以选中

元素。是的,在多个浏览器,得到的效果都是一致的。

看到这里,你可以再停一下,思考一下,为什么

元素的颜色仍旧是 color: blue

这是为什么呢?解答一下:

这是由于 :not(p) 同样能够选中 ,那么 的 color 即变成了 blue,由于 color 是一个可继承属性,

标签继承了 的 color 属性,导致看到的

也是蓝色。

我们把它改成一个不可继承的属性,试试看:

/* Selects any element that is NOT a paragraph */:not(p) {  border: 1px solid;}

7.png

OK,这次

没有边框体现,没有问题!

因此,实际使用的时候,需要一定要注意样式继承的问题!

(学习视频分享:css视频教程、web前端)

以上就是看看这两个 CSS 面试题,考察你的基础!的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1624776.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月24日 08:34:52
下一篇 2025年12月24日 08:34:57

相关推荐

  • CSS媒体查询完全指南(Media Quires)

    本篇文章带大家学习css媒体查询(media quires),详细介绍了媒体查询语法定义,从三个具体布局例子学习媒体查询的使用技巧;并介绍了一些scss、css属性知识。 什么是SCSS Sass: Sass Basics (sass-lang.com) SCSS 是 CSS 的预处理器,它比常规 …

    2025年12月24日 好文分享
    000
  • 手把手带你使用单个标签+CSS实现复杂的棋盘布局

    最近,有群友问我,他们的一个作业,尽量使用少的标签去实现这样一个象棋布局: 他用了 60 多个标签,而他的同学,只用了 6 个,问我有没有办法尽可能的做到利用更少的标签去完成这个布局效果。 其实,对于一个页面的布局而言,标签越少不一定是好事,我们在考虑 DOM 的消耗的同时,也需要关注代码的可读性,…

    2025年12月24日 好文分享
    000
  • CSS实用小技巧:利用视差实现酷炫交互动效

    本文将介绍利用 CSS 实现滚动视差效果的一个小技巧,并且,利用这个技巧来制作一些有意思的交互特效。【学习视频分享:css视频教程、web前端】 关于使用 CSS 实现滚动视差效果,在之前有一篇文章详细描述过具体方案 – CSS 实现视差效果,感兴趣的同学可以先看看这篇文章。 这里,会运…

    2025年12月24日 好文分享
    000
  • CSS新特性学习:方向裁切overflow:clip

    本篇文章将介绍一个新特性,从 chrome 90 开始,overflow 新增的一个新特性 — overflow: clip,使用它,轻松的对溢出方向进行控制。 overflow: clip 为何 首先,简单介绍下 overflow: clip 的用法。 overflow: clip: …

    2025年12月24日 好文分享
    000
  • 原来利用纯CSS也能实现拼图游戏!

    原来利用纯css也能实现拼图游戏!本篇文章就来给将向大家介绍一种将多个 css 技巧运用到极致的技巧,利用纯 css 实现拼图游戏。 本技巧源自于 Temani Afif 的 CodePen CSS Only Puzzle game。一款完全由 CSS 实现的拼图游戏。 我们要做的,就是将散落的图片…

    2025年12月24日 好文分享
    000
  • 详解怎么使用纯CSS实现多行文本的渐隐动画

    本文将探讨一下,在多行文本情形下的一些有意思的文字动效。多行文本,相对于单行文本,场景会复杂一些,但是在实际业务中,多行文本也是非常之多的,但是其效果处理比起单行文本会更困难。 【学习视频分享:css视频教程、web前端】 单行与多行文本的渐隐 首先,我们来看这样一个例子,我们要实现这样一个单行文本…

    2025年12月24日 好文分享
    000
  • 一张图帮你完全掌握CSS所有属性!

    css 属性被分为不同的类型,如字体属性、文本属性、边框属性、边距属性、布局属性、定位属性、打印属性等。对于初学者来说,初学 css 的最大障碍是如何熟悉并掌握这些属性的使用。 提示:不要急于记住每个 CSS 属性,不要急于一下吃透它们的用法,更不能机械记忆,如果使用背英语单词的方法来记忆,效果势必…

    2025年12月24日
    000
  • 20个首页流行布局样式,总有一个可以用上!

    有时我们会在网站上遇到一些内容布局问题,如文字对齐、图片设计与内容和谐、为文章选择合适的字体……在今天的文章中,介绍一些设计精美的创意布局,let‘s  开始。【推荐学习:css视频教程】 代号 001 源码:https://codepen.io/xmark/pen/epeo…

    2025年12月24日 好文分享
    000
  • 利用CSS也能轻松实现超酷炫的转场动画!

    利用css也能轻松实现超酷炫的转场动画了!只需利用最新的 css @scroll-timeline 规范即可。下面本篇文章就通过两个案例来看看利用@scroll-timeline怎么实现超酷炫的转场动画,希望对大家有所帮助! 在 WeGame 的 PC 端官网首页,有着非常多制作精良的基于滚动的动画…

    2025年12月24日 好文分享
    000
  • 深入了解CSS中一个非常有意思的属性 mask

    本篇文章带大家深入了解css中一个非常有意思的属性 mask,希望对大家有所帮助! 顾名思义,mask 译为遮罩。在 CSS 中,mask 属性允许使用者通过遮罩或者裁切特定区域的图片的方式来隐藏一个元素的部分或者全部可见区域。【推荐学习:css视频教程】 其实 mask 的出现已经有一段时间了,只…

    2025年12月24日 好文分享
    000
  • 看看CSS如何利用计数器来实现长按点赞累积动画

    本篇文章给大家分享一个css自定义计数器的使用小技巧,聊聊如何利用它实现长按点赞累积动画,希望对大家有所帮助! 【推荐学习:css视频教程】 在某条 APP 中,如果长按点赞,会出现这样花里胡哨的动画,如下 立即学习“前端免费学习笔记(深入)”; 这个动画有两部分组成,其中这个随机表情的实现可以参考…

    2025年12月24日 好文分享
    000
  • CSS mask-composite高级技巧:单张图片的任意颜色转换

    本篇文章给大家介绍一种基于 css mask-composite 的高级切图技巧,实现基于单张图片的任意颜色转换,希望对大家有所帮助! 通过掌握 CSS mask-composite ,我们可以通过一张 图片,得到关于它的各种变换,甚至乎,得到各种不同颜色的变换。【推荐学习:css视频教程】 通过单…

    2025年12月24日 好文分享
    000
  • css如何排除第一个子元素

    4种方法:1、用“:not()”和“:first-child”,语法“元素:not(:first-child){样式}”;2、用“:nth-of-type”,语法“元素:nth-of-type(n+2){样式}”;3、用“:nth-child”,语法“元素:nth-child(n+2){样式}”;4…

    2025年12月24日 好文分享
    000
  • 巧用CSS实现鼠标跟随 3D 旋转效果,让交互更加生动!

    本篇文章给大家介绍一下如何使用css实现有意思的鼠标跟随 3d 旋转效果,让交互更加生动,希望对大家有所帮助! 今天,群友问了这样一个问题,如下所示的鼠标跟随交互效果,如何实现: 简单分析一下,这个交互效果主要有两个核心: 立即学习“前端免费学习笔记(深入)”; 借助了 CSS 3D 的能力 元素的…

    2025年12月24日 好文分享
    000
  • 详解用SVG给 favicon 添加标识

    怎么使用svg给 favicon 添加标识?下面本篇文章给大家介绍一下使用 svg 生成带标识的 favicon的方法,希望对大家有所帮助! 之前做了一个 Chrome 插件,可以根据地址的不同生成不同的图标,这样可以很方便的区分不同的开发环境,效果如下 主要实现过程其实不复杂,首先获取网站 fav…

    2025年12月24日 好文分享
    000
  • 手把手教你用 transition 实现短视频 APP的点赞动画

    怎么使用纯 css 实现有趣的点赞动画?下面本篇文章就带大家了解一下巧妙借助 transition实现点赞动画的方法,希望对大家有所帮助! 在各种短视频界面上,我们经常会看到类似这样的点赞动画: 非常的有意思,有意思的交互会让用户更愿意进行互动。 那么,这么有趣的点赞动画,有没有可能使用纯 CSS …

    2025年12月24日 好文分享
    000
  • 巧用 CSS混合模式 让文字智能适配背景颜色

    页面上有一段文本,能否实现这段文本在不同背景色下展示不同的颜色?也就是俗称的智能变色。像是下面这样: 文本在黑色底色上表现为白色,在白色底色上表现为黑色。看似很复杂的一个效果,但是其实在 CSS 中非常好实现,今天就介绍这样一个小技巧,在 CSS 中,利用混合模式 mix-blend-mode: d…

    2025年12月24日 好文分享
    000
  • CSS中什么是层级选择器?怎么用?

    在之前的文章《 将如上代码可以画成如下节点树,如下图所示 现在来我们看一个HTML元素之间的关系,在HTML页面中元素之间的关系存在着如下所示的三种关系: 这里将body元素的后代div元素设置背景色为yellow。也就是说,所有的div都被染上了黄色。 子选择器 用于选择某个元素下(可能是多个元素…

    2025年12月24日 好文分享
    000
  • css伪选择器学习之伪元素选择器解析

    在之前的文章《css中什么是层级选择器?怎么用?》中,我们学习了4种层级选择器,下面我们聊聊伪选择器,它们提供了更复杂的功能,但非直接对应html文档应以的元素。伪选择器主要分两种:伪元素和伪类。下面我们先详细聊聊伪元素选择器。 伪元素选择器 CSS中伪元素选择器 的是在指定CSS选择器增加关键字。…

    2025年12月24日 好文分享
    000
  • div外边距重合问题及解决方法

    本篇文章给大家带来了关于css的相关知识,其中主要介绍了关于如何解决div外边距重合的相关问题,外边距的重叠只产生在普通流文档的上下外边距之间,只有块元素会发生外边距重叠,行内元素和行内块元素都不会发生外边距重叠问题,下面一起来看一下,希望对大家有帮助。 (学习视频分享:css视频教程、html视频…

    2025年12月24日
    000

发表回复

登录后才能评论
关注微信