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

<div> <p id="a">First Paragraph</p> </div>
p#a { color: green; } div::first-line { color: blue; }
<p>
内的文字的颜色,是 green 还是 blue 呢?<p>有趣的是,这里的最终结果是蓝色,也就是 color: blue
生效了。【推荐学习:css视频教程】<p>
<p>
元素上,只看到了 color: green
生效,没找到 div::first-line
的样式定义:<p>
<div>
的样式规则,才能在最下面看到这样一条规则:<p>
<p>
标签继承了父元素 <div>
的这条规则,并且作用到了自身第一行元素之上,覆盖了原本的 ID 选择器内定义的 color: green
。再进行验证
<p>这里,另外一个比较迷惑的点在于,为什么 ID 选择器的优先级比::first-line
选择器更低。<p>我们再做一些简单的尝试:<p>下面的 DEMO 展示了 ::first-line
样式和各种选择器共同作用时的优先级对比,甚至包括了 !important
规则:- 第 1 段通过标签选择器设置为灰色
- 第 2 段通过类选择器设置为灰色
- 第 3 段通过 ID 选择器设置为灰色
- 第 4 段通过 !important bash 设置为灰色
::first-line
选择器。<h2 id="first-line-nbsp-vs-nbsp-tag-nbsp-selector">::first-line vs. tag selector</h2> <p>This paragraph ...</p> <h2 id="first-line-nbsp-vs-nbsp-class-nbsp-selector">::first-line vs class selector</h2> <p class="p2">This paragraph color i...</p> <h2 id="first-line-nbsp-vs-nbsp-ID-nbsp-selector">::first-line vs ID selector</h2> <p id="p3">This paragraph color is set ...</p> <h2 id="first-line-nbsp-vs-nbsp-important">::first-line vs !important</h2> <p id="p4">This paragraph color is ....</p>
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; }
<p>CodePen Demo -- ::first-line: demo<p>https://codepen.io/KittyGiraudel/pen/kWobaa/569e082a67400f5fb39a96030d0e9b6c<p>看看效果:<p>

::first-line
高。<p>究其原因,在于,::first-line
其实是个伪元素而不是一个伪类,被其选中的内容其实会被当成元素的子元素进行处理,类似于 ::before
,::after
一样,因此,对于父元素的 color 规则,对于它而言只是一种级联关系,通过 ::first-line
本身定义的规则,优先级会更高!<p>这也是为什么,在 MDN 文档中,更推荐的是双冒号的写法(当然浏览器都支持单冒号的写法)-- MDN -- ::first-line<p>
再来一题,MDN 的错误例子?一个有意思的现象
<p>说完上面这题。我们再来看看一题,非常类似的题目。<p>在 MDN 介绍:not
的页面,有这样一个例子:/* Selects any element that is NOT a paragraph */ :not(p) { color: blue; }
:not(p)
可以选择任何不是 <p>
标签的元素。然而,上面的 CSS 选择器,在如下的 HTML 结构,实测的结果不太对劲。<p>p</p> <div>div</div> <span>span</span> <h1 id="h">h1</h1>
<p>CodePen Demo -- :not pesudo demo<p>https://codepen.io/Chokcoco/pen/KKZbWjy<p>意思是,
:not(p)
仍然可以选中 <p>
元素。是的,在多个浏览器,得到的效果都是一致的。<p>看到这里,你可以再停一下,思考一下,为什么 <p>
元素的颜色仍旧是 color: blue
?<p>这是为什么呢?解答一下:<p>这是由于 :not(p)
同样能够选中 <body>
,那么 <body>
的 color 即变成了 blue
,由于 color
是一个可继承属性,<p>
标签继承了 <body>
的 color 属性,导致看到的 <p>
也是蓝色。<p>我们把它改成一个不可继承的属性,试试看:/* Selects any element that is NOT a paragraph */ :not(p) { border: 1px solid; }
<p>
没有边框体现,没有问题!
<p>因此,实际使用的时候,需要一定要注意样式继承的问题!
<p>(学习视频分享:css视频教程、web前端)以上是看看这两个 CSS 面试题,考察你的基础!的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

HTML定义网页结构,CSS负责样式和布局,JavaScript赋予动态交互。三者在网页开发中各司其职,共同构建丰富多彩的网站。

在 Vue.js 中使用 Bootstrap 分为五个步骤:安装 Bootstrap。在 main.js 中导入 Bootstrap。直接在模板中使用 Bootstrap 组件。可选:自定义样式。可选:使用插件。

创建 Bootstrap 分割线有两种方法:使用 标签,可创建水平分割线。使用 CSS border 属性,可创建自定义样式的分割线。

在 Bootstrap 中插入图片有以下几种方法:直接插入图片,使用 HTML 的 img 标签。使用 Bootstrap 图像组件,可以提供响应式图片和更多样式。设置图片大小,使用 img-fluid 类可以使图片自适应。设置边框,使用 img-bordered 类。设置圆角,使用 img-rounded 类。设置阴影,使用 shadow 类。调整图片大小和位置,使用 CSS 样式。使用背景图片,使用 background-image CSS 属性。

要调整 Bootstrap 中元素大小,可以使用尺寸类,具体包括:调整宽度:.col-、.w-、.mw-调整高度:.h-、.min-h-、.max-h-

要设置 Bootstrap 框架,需要按照以下步骤:1. 通过 CDN 引用 Bootstrap 文件;2. 下载文件并将其托管在自己的服务器上;3. 在 HTML 中包含 Bootstrap 文件;4. 根据需要编译 Sass/Less;5. 导入定制文件(可选)。设置完成后,即可使用 Bootstrap 的网格系统、组件和样式创建响应式网站和应用程序。

如何使用 Bootstrap 按钮?引入 Bootstrap CSS创建按钮元素并添加 Bootstrap 按钮类添加按钮文本

答案:可以使用 Bootstrap 的日期选择器组件在页面中查看日期。步骤:引入 Bootstrap 框架。在 HTML 中创建日期选择器输入框。Bootstrap 将自动为选择器添加样式。使用 JavaScript 获取选定的日期。
