面试 CSS 框架八股文十问十答第一期

面试 CSS 框架八股文十问十答第一期

作者:程序员小白条个人博客

相信看了本文后,对你的面试是有一定帮助的!关注专栏后就能收到持续更新!

⭐点赞⭐收藏⭐不迷路!⭐

1)CSS选择器及其优先级

CSS选择器用于选择页面上的元素,它们可以根据元素的标签名、类名、ID等属性进行选择。选择器的优先级决定了当多个规则同时匹配一个元素时,哪一个规则会被应用。优先级从高到低分为四个级别:

  • 内联样式(Inline Styles) :使用style属性直接在HTML元素上定义的样式,具有最高优先级。
  • ID选择器 :通过元素的ID属性选择元素(例如,#myElement),比类选择器具有更高的优先级。
  • 类选择器、属性选择器、伪类选择器:通过类名、属性或伪类选择元素。
  • 元素选择器、伪元素选择器:通过元素名或伪元素选择元素。

2)CSS中可继承与不可继承属性有哪些

  • 可继承属性 :部分样式属性的值会被子元素继承。例如,font-familycolorline-height等都是可继承的属性。子元素会继承父元素的这些样式值,除非子元素被明确设置了相应的样式。
  • 不可继承属性 :有些样式属性的值不会被子元素继承,需要子元素自行设置。例如,borderpaddingmargin等都是不可继承的属性。

3)display的属性值及其作用

display属性用于定义元素的显示类型,常用的取值有:

  • block:元素会被显示为块级元素,独占一行,宽度自动填满父元素。
  • inline:元素会被显示为行内元素,不会独占一行,宽度根据内容自动调整。
  • inline-block:元素会被显示为行内块级元素,同行显示,但可以设置宽高等属性。
  • none:元素会被隐藏,不占用空间。
  • flex:定义一个弹性容器,子元素可以通过设置弹性属性进行伸缩。
  • grid:定义一个网格容器,子元素可以按照网格布局进行排列。

4)display的block、inline和inline-block的区别

  • block:元素会被显示为块级元素,独占一行,宽度自动填满父元素,可以设置宽高、内外边距等属性。
  • inline:元素会被显示为行内元素,不独占一行,宽度根据内容自动调整,不能设置宽高、上下边距。
  • inline-block:元素会被显示为行内块级元素,同行显示,可以设置宽高、内外边距等属性。

5)隐藏元素的方法有哪些

  • display: none;:将元素完全隐藏,不占用页面空间。

    复制代码
    .hidden-element {
      display: none;
    }
  • visibility: hidden;:将元素隐藏,但仍然占用页面空间。

    css 复制代码
    .hidden-element {
      visibility: hidden;
    }
  • opacity: 0;:将元素设为完全透明,但仍然占用页面空间。

    css 复制代码
    .hidden-element {
      opacity: 0;
    }
  • position: absolute; left: -9999px;:将元素移出可视区域,但仍然占用页面空间。

    css 复制代码
    .hidden-element {
      position: absolute;
      left: -9999px;
    }

选择隐藏的方法取决于需求,例如,如果希望元素在布局中不占用空间,可以使用display: none;。如果希望元素占用空间但不可见,可以使用其他方法。

6)link和@import的区别

  • link是HTML中的标签,用于引入外部样式表,通过rel属性指定样式表的关系,可以同时引入多个样式表。link标签会在页面加载时同时加载,可以影响页面的渲染速度。
  • @import是CSS中的语法规则,用于引入外部样式表,通过在样式表中使用@import语句来引入其他样式表。@import语句只能在样式表中使用,而不能在HTML中使用。@import会在页面加载完毕后再加载,对页面的渲染速度没有直接影响。

7)transition和animation的区别

  • Transition:用于控制元素从一种样式逐渐变为另一种样式的过程。它需要指定过渡的属性、持续时间、过渡效果的速度曲线等。
  • Animation:更灵活,可以定义更复杂的动画效果。可以控制动画的每一帧,包括起始状态、结束状态和中间状态,可以定义关键帧。

8)display:none与visibility:hidden的区别

  • display: none;:完全从文档流中移除元素,不占据任何空间,元素及其子元素都不可见,并且不会触发重排和重绘。
  • visibility: hidden;:元素在页面中隐藏,但仍然占据着它在文档流中的空间,元素不可见但仍保留在文档中,会触发重排和重绘。

9)伪元素和伪类的区别和作用?

  • 伪类(Pseudo-classes) :是用于向某些选择器添加特殊的效果的关键词,它们不是真正意义上的元素,而是元素的特殊状态。常见的伪类有:hover:active:focus等,用于根据用户的行为来改变元素的样式。
  • 伪元素(Pseudo-elements) :是用于向某些选择器添加特殊效果的关键词,它们允许你为元素的特定部分设置样式。常见的伪元素有::before::after,用于在元素的内容前面或后面插入生成的内容。

10)对requestAnimationframe的理解

requestAnimationFrame 是浏览器提供的一个 API,用于优化 JavaScript 动画的性能。它告诉浏览器希望执行动画,并请求浏览器在下次重绘之前调用指定的函数来更新动画。

与传统的定时器(如 setTimeoutsetInterval)相比,requestAnimationFrame 更加智能和高效,它能够自动调整动画的帧速率以匹配浏览器的刷新率,从而提供更流畅的动画效果,并且在页面不可见时自动停止,节省了资源。

使用 requestAnimationFrame,开发者可以编写更加流畅、更高性能的 JavaScript 动画。

开源项目地址:https://gitee.com/falle22222n-leaves/vue_-book-manage-system

已 300 + Star!

⭐点赞⭐收藏⭐不迷路!⭐

相关推荐
Larcher28 分钟前
新手也能学会,100行代码玩AI LOGO
前端·llm·html
徐子颐41 分钟前
从 Vibe Coding 到 Agent Coding:Cursor 2.0 开启下一代 AI 开发范式
前端
小月鸭1 小时前
如何理解HTML语义化
前端·html
jump6801 小时前
url输入到网页展示会发生什么?
前端
诸葛韩信1 小时前
我们需要了解的Web Workers
前端
brzhang1 小时前
我觉得可以试试 TOON —— 一个为 LLM 而生的极致压缩数据格式
前端·后端·架构
yivifu2 小时前
JavaScript Selection API详解
java·前端·javascript
这儿有一堆花2 小时前
告别 Class 组件:拥抱 React Hooks 带来的函数式新范式
前端·javascript·react.js
熊猫钓鱼>_>2 小时前
Java面向对象核心面试技术考点深度解析
java·开发语言·面试·面向对象··class·oop
十二春秋2 小时前
场景模拟:基础路由配置
前端