以下是基于全网整理的CSS经典面试题及最新解答

174 阅读5分钟

大家好,我是鱼樱!!!

关注公众号【鱼樱AI实验室】持续每天分享更多前端和AI辅助前端编码新知识~~喜欢的就一起学反正开源至上,无所谓被诋毁被喷被质疑文章没有价值~

一个城市淘汰的自由职业-农村前端程序员(虽然不靠代码挣钱,写文章就是为爱发电),兼职远程上班目前!!!热心坚持分享多数人有用的css面试题~~~


一、高频核心面试题(出现概率≥75%)

  1. 盒模型及box-sizing属性
    问题:解释标准盒模型与IE盒模型的区别?如何设置?
    解答

    • 标准盒模型:width/height = 内容宽度/高度,不包括padding、border。
    • IE盒模型:width/height = 内容 + padding + border,通过box-sizing: border-box设置。
      概率:6/8(75%)
  2. CSS选择器优先级
    问题:计算!important、内联样式、ID、类、标签选择器的优先级?
    解答

    • 优先级公式:!important > 内联样式(1000) > ID(100) > 类/伪类/属性(10) > 标签/伪元素(1)
      概率:5/8(62.5%)
  3. 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%)
  4. 居中方法
    问题:如何实现水平垂直居中?
    解答

    • Flex/Grid:display: flex/grid; place-items: center
    • 绝对定位:top: 50%; left: 50%; transform: translate(-50%, -50%)
      概率:5/8(62.5%)
  5. BFC(块级格式化上下文)
    问题:BFC的作用及触发条件?
    解答

    • 作用:隔离布局,防止margin重叠,清除浮动等。
    • 触发条件:overflow: hiddendisplay: inline-blockposition: absolute等。
      概率:5/8(62.5%)

二、中高频面试题(出现概率≥50%)

  1. 清除浮动的方法
    解答

    • 父元素设置overflow: hidden
    • 添加空元素并设置clear: both
    • 使用伪元素.clearfix::after { content: ''; display: block; clear: both }
      概率:4/8(50%)
  2. 伪类与伪元素的区别
    解答

    • 伪类(如:hover)用于状态修饰,伪元素(如::after)创建虚拟元素。
      概率:4/8(50%)
  3. CSS3新特性
    解答

    • 过渡(transition)、动画(animation)、Flex/Grid布局、媒体查询(@media)、阴影(box-shadow)等。
      概率:4/8(50%)
  4. 重排(Reflow)与重绘(Repaint)
    解答

    • 重排:布局变化(如修改宽度),触发重新计算布局。
    • 重绘:样式变化(如修改颜色),仅重新绘制。
      概率:3/8(37.5%)

三、进阶题(高频扩展)

  1. 响应式设计实现
    解答

    • 使用媒体查询(@media)、百分比布局、Flex/Grid弹性布局。
  2. CSS实现三角形
    解答

    • 设置width: 0; height: 0; border: 透明边 + 实色边
  3. 移动端1px问题
    解答

    • 使用伪元素+transform: scale(0.5)

四、其他高频CSS面试题(出现概率≥50%)

  1. 伪类与伪元素的区别
    问题:伪类(如 :hover)和伪元素(如 ::after)的区别是什么?
    解答

    • 伪类:表示元素的状态(如悬停、激活),用单冒号 : 表示(如 :hover)。
    • 伪元素:创建文档树之外的虚拟元素(如内容前后插入元素),用双冒号 :: 表示(如 ::after)。
      示例
    .link:hover { color: red; }       /* 伪类 */
    .box::after { content: "→"; }     /* 伪元素 */
    
  2. 清除浮动的原理与方法
    问题:浮动元素导致父元素高度塌陷,如何清除浮动?
    解答

    • 原理:触发父元素的 BFC,使其包含浮动子元素。
    • 方法
      1. 父元素设置 overflow: hidden
      2. 使用伪元素 .clearfix::after { content: ""; display: block; clear: both; }
      3. 添加空元素并设置 clear: both
  3. CSS3 新增特性
    问题:列举 CSS3 的核心新特性。
    解答

    • 布局:Flexbox、Grid。
    • 视觉效果border-radius(圆角)、box-shadow(阴影)、渐变(linear-gradient)。
    • 动画transition(过渡)、@keyframes(关键帧动画)。
    • 响应式@media 媒体查询。
  4. BFC 的作用与触发条件
    问题:BFC 如何解决布局问题?如何触发?
    解答

    • 作用:隔离布局,防止 margin 重叠、清除浮动、阻止元素被浮动覆盖。
    • 触发条件overflow: hiddendisplay: inline-blockposition: absolute
  5. 响应式设计的实现方案
    问题:如何实现不同屏幕尺寸的适配?
    解答

    • 媒体查询@media (max-width: 768px) { ... }
    • 弹性单位:使用 remvw 等相对单位。
    • 布局技术:Flexbox 和 Grid 的动态分配空间。

五、进阶与应用题(高频扩展)

  1. CSS 性能优化
    问题:如何减少 CSS 对页面性能的影响?
    解答

    • 减少重排/重绘:避免频繁修改样式,使用 transform 替代 top/left
    • 压缩与合并:使用工具压缩 CSS 文件,合并多个文件减少 HTTP 请求。
  2. 实现常见图形效果
    问题:如何用 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;
    }
    
  3. 移动端适配问题
    问题:如何解决移动端 1px 边框变粗的问题?
    解答

    • 缩放方案:使用伪元素 + transform: scale(0.5)
    • 媒体查询:通过 device-pixel-ratio 适配高分辨率屏幕。
  4. CSS 模块化与工程化
    问题:如何实现 CSS 的模块化开发?
    解答

    • 命名规范:BEM(Block-Element-Modifier)。
    • 预处理器:使用 Sass/Less 的变量和嵌套语法。
    • CSS-in-JS:结合框架如 styled-components。
    • CSS Module:React、Vue和Angular等框架中应用。

六、统计与建议

  1. 高频题覆盖:盒模型、Flex布局、BFC、清除浮动、伪类/伪元素等题目在超过 50% 的面试中出现,需重点掌握。
  2. 最新趋势:CSS Grid、性能优化(如减少重排)逐渐成为考察重点。
  3. 综合能力:面试常结合实际场景(如实现复杂布局),建议通过项目实践加深理解。