CSS 面试问题
本文整理了一些前端面试中常见的 CSS 问题,涵盖基础语法、选择器与层叠规则、布局、响应式设计、动画与性能,以及实际开发经验等方面。
这些问题并不追求“背答案”,而是帮助你检验自己是否真正理解 CSS 的工作方式。即使你并不打算面试,也可以通过这些问题检验自己对 CSS 的理解深度。
CSS 基础概念
1. CSS 是什么?它的主要作用是什么?
答案:CSS(Cascading Style Sheets,层叠样式表)是用于描述 HTML 文档样式的语言。主要作用包括:
- 控制网页的外观和布局
- 实现响应式设计
- 创建动画和交互效果
- 提高代码的可维护性
2. CSS 和 HTML、JavaScript 分别负责什么?
答案:
- HTML:负责内容结构和语义
- CSS:负责样式和视觉效果
- JavaScript:负责交互行为和动态功能
三者分离,各司其职,便于 维护和协作。
3. 行内元素和块级元素有什么区别?
答案:
- 块级元素:独占一行,可以设置宽高,默认宽度 100%
- 行内元素:不独占一行,不能设置宽高,宽度由内容决定
- 行内块元素:不独占一行,但可以设置宽高
4. display 常见取值有哪些?分别有什么作用?
答案:
block:块级元素inline:行内元素inline-block:行内块元素flex:弹性布局容器grid:网格布局容器none:隐藏元素,不占据空间
5. display: none 和 visibility: hidden 有什么区别?
答案:
display: none:元素隐藏且不占据空间, 不会触发事件visibility: hidden:元素隐藏但仍占据空间,不会触发事件
6. inline、inline-block、block 的差异是什么?
答案:
inline:不独占一行,不能设置宽高inline-block:不独占一行,可以设置宽高block:独占一行,可以设置宽高
7. CSS 注释的写法是什么?是否会影响页面性能?
答案:
- 写法:
/* 注释内容 */ - 不会影响页面性能,但会增加文件大小
8. width、height 对哪些元素生效?
答案:
- 对块级元素和行内块元素生效
- 对行内元素不生效(宽度由内容决定)
选择器与优先级
1. CSS 有哪些常见选择器?
答案:
- 基础选择器:元素、类、ID、通用选择器
- 属性选择器:
[attr]、[attr="value"]等 - 组合选择器:后代、子、兄弟选择器
- 伪类:
:hover、:focus、:nth-child()等 - 伪元素:
::before、::after、::first-line等
2. 类选择器和 ID 选择器的使用场景有什么不同?
答案:
- 类选择器:可复用,用于多个元素,优先级较低
- ID 选择器:唯一性,用于特定元素,优先级较高
推荐优先使用类选择器,ID 选择器主要用于 JavaScript 钩子。
3. 什么是选择器的特异性(Specificity)?
答案:特异性是浏览器用来决定哪个 CSS 规则应该被应用的机制。当多个规则匹配同一元素时,特异性高的规则会覆盖特异性低的规则。
4. 特异性是如何计算的?
答案:特异性由四部分组成(从高到低):
- 内联样式:1000
- ID 选择器:100
- 类/属性/伪类:10
- 元素/伪元素:1
5. 内联样式、ID、类、元素选择器,哪个优先级更高?
答案:优先级从高到低:内联样式 > ID > 类 > 元素选择器
6. !important 的作用是什么?
答案:!important 声明会覆盖所有其他样式规则(除了另一个 !important 规则),无论特异性有多高。