大家好,我是鱼樱!!!
关注公众号【鱼樱AI实验室】持续每天分享更多前端和AI辅助前端编码新知识~~喜欢的就一起学反正开源至上,无所谓被诋毁被喷被质疑文章没有价值~
一个城市淘汰的自由职业-农村前端程序员(虽然不靠代码挣钱,写文章就是为爱发电),兼职远程上班目前!!!热心坚持分享多数人有用的css面试题~~~
一、高频核心面试题(出现概率≥75%)
-
盒模型及box-sizing属性
问题:解释标准盒模型与IE盒模型的区别?如何设置?
解答:- 标准盒模型:
width/height = 内容宽度/高度,不包括padding、border。 - IE盒模型:
width/height = 内容 + padding + border,通过box-sizing: border-box设置。
概率:6/8(75%)
- 标准盒模型:
-
CSS选择器优先级
问题:计算!important、内联样式、ID、类、标签选择器的优先级?
解答:- 优先级公式:
!important > 内联样式(1000) > ID(100) > 类/伪类/属性(10) > 标签/伪元素(1)。
概率:5/8(62.5%)
- 优先级公式:
-
Flexbox布局
问题:Flex布局如何实现水平垂直居中?flex-shrink如何计算?
解答:- 居中:
display: flex; justify-content: center; align-items: center。 flex-shrink计算:按权重分配溢出空间。例如,子元素1宽度100px(shrink=1),子元素2宽度300px(shrink=2),总溢出100px,则子1收缩值:100/(1+2*3)=14.28px。
概率:6/8(75%)
- 居中:
-
居中方法
问题:如何实现水平垂直居中?
解答:- Flex/Grid:
display: flex/grid; place-items: center。 - 绝对定位:
top: 50%; left: 50%; transform: translate(-50%, -50%)。
概率:5/8(62.5%)
- Flex/Grid:
-
BFC(块级格式化上下文)
问题:BFC的作用及触发条件?
解答:- 作用:隔离布局,防止margin重叠,清除浮动等。
- 触发条件:
overflow: hidden、display: inline-block、position: absolute等。
概率:5/8(62.5%)
二、中高频面试题(出现概率≥50%)
-
清除浮动的方法
解答:- 父元素设置
overflow: hidden。 - 添加空元素并设置
clear: both。 - 使用伪元素
.clearfix::after { content: ''; display: block; clear: both }。
概率:4/8(50%)
- 父元素设置
-
伪类与伪元素的区别
解答:- 伪类(如
:hover)用于状态修饰,伪元素(如::after)创建虚拟元素。
概率:4/8(50%)
- 伪类(如
-
CSS3新特性
解答:- 过渡(transition)、动画(animation)、Flex/Grid布局、媒体查询(@media)、阴影(box-shadow)等。
概率:4/8(50%)
- 过渡(transition)、动画(animation)、Flex/Grid布局、媒体查询(@media)、阴影(box-shadow)等。
-
重排(Reflow)与重绘(Repaint)
解答:- 重排:布局变化(如修改宽度),触发重新计算布局。
- 重绘:样式变化(如修改颜色),仅重新绘制。
概率:3/8(37.5%)
三、进阶题(高频扩展)
-
响应式设计实现
解答:- 使用媒体查询(
@media)、百分比布局、Flex/Grid弹性布局。
- 使用媒体查询(
-
CSS实现三角形
解答:- 设置
width: 0; height: 0; border: 透明边 + 实色边。
- 设置
-
移动端1px问题
解答:- 使用伪元素+
transform: scale(0.5)。
- 使用伪元素+
四、其他高频CSS面试题(出现概率≥50%)
-
伪类与伪元素的区别
问题:伪类(如:hover)和伪元素(如::after)的区别是什么?
解答:- 伪类:表示元素的状态(如悬停、激活),用单冒号
:表示(如:hover)。 - 伪元素:创建文档树之外的虚拟元素(如内容前后插入元素),用双冒号
::表示(如::after)。
示例:
.link:hover { color: red; } /* 伪类 */ .box::after { content: "→"; } /* 伪元素 */ - 伪类:表示元素的状态(如悬停、激活),用单冒号
-
清除浮动的原理与方法
问题:浮动元素导致父元素高度塌陷,如何清除浮动?
解答:- 原理:触发父元素的 BFC,使其包含浮动子元素。
- 方法:
- 父元素设置
overflow: hidden。 - 使用伪元素
.clearfix::after { content: ""; display: block; clear: both; }。 - 添加空元素并设置
clear: both。
- 父元素设置
-
CSS3 新增特性
问题:列举 CSS3 的核心新特性。
解答:- 布局:Flexbox、Grid。
- 视觉效果:
border-radius(圆角)、box-shadow(阴影)、渐变(linear-gradient)。 - 动画:
transition(过渡)、@keyframes(关键帧动画)。 - 响应式:
@media媒体查询。
-
BFC 的作用与触发条件
问题:BFC 如何解决布局问题?如何触发?
解答:- 作用:隔离布局,防止 margin 重叠、清除浮动、阻止元素被浮动覆盖。
- 触发条件:
overflow: hidden、display: inline-block、position: absolute。
-
响应式设计的实现方案
问题:如何实现不同屏幕尺寸的适配?
解答:- 媒体查询:
@media (max-width: 768px) { ... }。 - 弹性单位:使用
rem、vw等相对单位。 - 布局技术:Flexbox 和 Grid 的动态分配空间。
- 媒体查询:
五、进阶与应用题(高频扩展)
-
CSS 性能优化
问题:如何减少 CSS 对页面性能的影响?
解答:- 减少重排/重绘:避免频繁修改样式,使用
transform替代top/left。 - 压缩与合并:使用工具压缩 CSS 文件,合并多个文件减少 HTTP 请求。
- 减少重排/重绘:避免频繁修改样式,使用
-
实现常见图形效果
问题:如何用 CSS 绘制三角形或梯形?
解答:/* 三角形 */ .triangle { width: 0; height: 0; border: 20px solid transparent; border-bottom-color: red; } /* 梯形 */ .trapezoid { width: 100px; height: 0; border-bottom: 50px solid red; border-left: 30px solid transparent; border-right: 30px solid transparent; } -
移动端适配问题
问题:如何解决移动端 1px 边框变粗的问题?
解答:- 缩放方案:使用伪元素 +
transform: scale(0.5)。 - 媒体查询:通过
device-pixel-ratio适配高分辨率屏幕。
- 缩放方案:使用伪元素 +
-
CSS 模块化与工程化
问题:如何实现 CSS 的模块化开发?
解答:- 命名规范:BEM(Block-Element-Modifier)。
- 预处理器:使用 Sass/Less 的变量和嵌套语法。
- CSS-in-JS:结合框架如 styled-components。
- CSS Module:React、Vue和Angular等框架中应用。
六、统计与建议
- 高频题覆盖:盒模型、Flex布局、BFC、清除浮动、伪类/伪元素等题目在超过 50% 的面试中出现,需重点掌握。
- 最新趋势:CSS Grid、性能优化(如减少重排)逐渐成为考察重点。
- 综合能力:面试常结合实际场景(如实现复杂布局),建议通过项目实践加深理解。