首页 > web前端 > css教程 > 您应该知道CSS。我的问题以提高您的CSS技能

您应该知道CSS。我的问题以提高您的CSS技能

Susan Sarandon
发布: 2025-01-30 02:08:08
原创
707 人浏览过

You Should Know CSS. My questions to level up your CSS skill

大家好!

CSS 涵盖众多主题,没有哪个开发者能完全掌握所有内容。诚然,我们无需精通所有知识就能胜任工作,但有些 CSS 基础知识是必不可少的。我的问题正是围绕这些核心知识点展开。

这些问题并不适合初学者,你至少需要一年的 CSS 经验,两年则更好。只有具备一定的经验,你才能更好地理解这些问题的用意。

你也可以在 Github 上关注项目的开发进度。

开始吧!

注意:我使用了“计算值”这一术语,它指的是你在开发者工具“计算”选项卡中看到的属性值。

以下选择器的特指性是多少?

<code class="language-css">:is(#container, .content, main) {
  color: red;
}</code>
登录后复制
登录后复制
登录后复制

:is()伪类函数帮助浏览器从给定的选择器列表中选择特指性最高的选择器。在本例中,特指性最高的选择器是#container。该选择器的特指性为 (0, 1, 0, 0)。这将应用于整个 @规则

color 属性的计算值为 red。正确还是错误?

<code class="language-css">.container {
  color: red;
}

:where(#container) {
  color: blue;
}</code>
登录后复制
登录后复制
登录后复制

正确。:where() 伪类函数会使特指性归零。因此,.container 选择器的特指性更高。这就是为什么 color 属性的计算值为 red

以下示例中会显示什么形状?

<code class="language-css">.container {
  display: inline;
  width: 1rem;
  height: 1rem;
  background-color: currentColor;
}</code>
登录后复制
登录后复制
登录后复制

如果元素的 display 属性为 inline,则 widthheight 属性无效。我们将看不到正方形,也看不到任何内容。

计算 .child 元素的 width 属性计算值的算法是什么?

<code class="language-html"><div class="parent">
  <div class="child"></div>
</div>
<div class="parent-flex">
  <div class="child"></div>
</div></code>
登录后复制
登录后复制
登录后复制
<code class="language-css">.parent {
  display: block;
}

.parent-flex {
  display: flex;
}</code>
登录后复制
登录后复制
登录后复制

情况 1:.child 元素是块级元素。它们的 width 属性等于父元素的 width 属性。

情况 2:.child 元素是弹性项目。它们的 width 属性根据内容计算。

伪元素的 display 属性的计算值是什么?

<code class="language-css">.parent {
  display: inline-grid;
}

.parent::before {
  content: "";
  display: inline;  
}

.parent::after {
  content: "";
  display: flex;
}</code>
登录后复制
登录后复制
登录后复制

blockflexgridinline-grid 值会将子元素的 display 属性的 inline-* 值转换为 block 替代值。

在父元素 display: flexdisplay: grid 的情况下,子元素的默认位置有什么区别?

display: flex 的父元素内部,子元素会在一行中依次显示。相反,在 display: grid 的情况下,元素会一个接一个地显示在下方。

.child 元素的 widthheight 属性的计算值是什么?

<code class="language-css">:is(#container, .content, main) {
  color: red;
}</code>
登录后复制
登录后复制
登录后复制
<code class="language-css">.container {
  color: red;
}

:where(#container) {
  color: blue;
}</code>
登录后复制
登录后复制
登录后复制

.child 元素的 width 属性等于父元素的 width 属性。因此,width 属性的计算值为 1600px。(假设浏览器默认字体大小为 16px,100rem = 100 * 16px = 1600px)

display: grid 的父元素内部,height 属性会填充所有空间。如果父元素有多个项目,空间将平均分配给它们。因此,.child 元素的 height 属性的计算值为 20rem / 2 = 10rem,即 10 * 16 = 160px。

.child 元素的边距在所有情况下都会超出父元素之外。正确还是错误?

<code class="language-css">.container {
  display: inline;
  width: 1rem;
  height: 1rem;
  background-color: currentColor;
}</code>
登录后复制
登录后复制
登录后复制
<code class="language-html"><div class="parent">
  <div class="child"></div>
</div>
<div class="parent-flex">
  <div class="child"></div>
</div></code>
登录后复制
登录后复制
登录后复制

错误。display: flexdisplay: inline-flexdisplay: griddisplay: inline-grid 的子元素边距不会超出父元素之外。

边距折叠是否在 display: inline-flexdisplay: inline-grid 的元素内部有效?

否,无效。在 display: flexdisplay: inline-flexdisplay: griddisplay: inline-grid 的元素内部,边距将被累加。

伪元素的位置是水平和垂直居中。正确还是错误?

<code class="language-css">.parent {
  display: block;
}

.parent-flex {
  display: flex;
}</code>
登录后复制
登录后复制
登录后复制

正确。浏览器会平均分配子元素和父元素边框之间的所有空间。

min-width 属性的计算值是什么?

<code class="language-css">.parent {
  display: inline-grid;
}

.parent::before {
  content: "";
  display: inline;  
}

.parent::after {
  content: "";
  display: flex;
}</code>
登录后复制
登录后复制
登录后复制
<code class="language-html"><div class="parent">
  <div class="child"></div>
</div></code>
登录后复制
登录后复制

min-width 的初始值为 auto。因此,.child 元素的 min-width 计算值为 auto

但是,如果为元素定义了 blockinlineinline-blocktabletable-* 值,则其子元素的 min-width 计算值为 0。

我们如何使用 gap 属性来替换 margin 属性?

<code class="language-css">.parent { 
  display: grid; 
  width: 100rem; 
  height: 20rem; 
}</code>
登录后复制

我们应该为 .parent 元素定义 gap 属性。

display 属性的计算值为 block。正确还是错误?

<code class="language-html"><div class="parent">
  <div class="child"></div>
</div></code>
登录后复制
登录后复制

正确。如果定义了 absolutefixed 值,浏览器会将 display 属性的所有 inline-* 值转换为 block 替代值。

为什么 .parent 元素的 height 属性的计算值为 0?

<code class="language-css">/* case #1 */
.parent {
  display: inline-flex;
}

.child {
  display: block;
  margin-block: 1rem;
}

/* case #2 */
.parent {
  display: grid;
}

.child {
  display: block;
  margin-block: 1rem;
}</code>
登录后复制
<code class="language-css">.container {
  display: grid;
  height: 100dvh;
}

.container::before {
  content: "";
  width: 1rem;
  height: 1rem;
  margin: auto;
}</code>
登录后复制

具有 position: absoluteposition: fixed 的元素会从正常的文档流中移除。因此,父元素看不到它。这就是为什么 height 属性的计算值为 0。

在以下示例中,isolation 属性的作用是什么?

<code class="language-css">:is(#container, .content, main) {
  color: red;
}</code>
登录后复制
登录后复制
登录后复制
<code class="language-css">.container {
  color: red;
}

:where(#container) {
  color: blue;
}</code>
登录后复制
登录后复制
登录后复制

我们应该记住,在使用 z-index 属性时,浏览器使用的是哪个堆叠上下文。

默认情况下,根堆叠上下文是 html 元素。这就是为什么在没有 isolation: isolate 的情况下,伪元素位于 .parent 元素之后。

我们使用 isolation 属性为 .child 元素创建了一个新的堆叠上下文。因此,伪元素显示在文本后面,但在 .parent 元素前面。

伪元素的位置是什么?

<code class="language-css">.container {
  display: inline;
  width: 1rem;
  height: 1rem;
  background-color: currentColor;
}</code>
登录后复制
登录后复制
登录后复制

首先,由于应用了 place-items: center,伪元素显示在中心。

在应用 position: absolutebottom: 0 后,它沿 Y 轴移动到父元素底部边框,因为 toprightbottomleft 属性的优先级高于 place-items 属性。

width 属性的计算值是什么?

<code class="language-html"><div class="parent">
  <div class="child"></div>
</div>
<div class="parent-flex">
  <div class="child"></div>
</div></code>
登录后复制
登录后复制
登录后复制

flex-basis 属性的优先级高于 width 属性,但其值也必须在 min-widthmax-width 属性的值范围内。所以答案是 225px。

padding 属性的计算值是什么?

<code class="language-css">.parent {
  display: block;
}

.parent-flex {
  display: flex;
}</code>
登录后复制
登录后复制
登录后复制

在使用 CSS 自定义属性时,我们应该定义简写的所有部分。如果我们不这样做,浏览器就无法应用值。

这在我们的示例中发生了。padding 简写需要 4 个值,但开发者只定义了 3 个。浏览器无法设置填充。因此,计算值为 0。

为什么 p 元素的 background-color 属性的计算值为绿色?

<code class="language-css">.parent {
  display: inline-grid;
}

.parent::before {
  content: "";
  display: inline;  
}

.parent::after {
  content: "";
  display: flex;
}</code>
登录后复制
登录后复制
登录后复制

CSS 自定义属性会从为父元素定义的相同自定义属性继承值。如果省略了自定义属性,浏览器将使用回退值。

在我们的示例中,从父元素中省略了 --background-color 属性。因此,浏览器使用回退值,即 inherit 关键字,该关键字从 body 元素的 background-color 属性继承绿色值。

This revised output maintains the original image formatting and avoids significant alterations to the meaning while rephrasing the text for improved readability and flow. The questions are presented in a more concise and organized manner.

以上是您应该知道CSS。我的问题以提高您的CSS技能的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板