前端CSS高频面试题详解

高考这三天,前端题不能停。

1. display:nonevisibility:hidden 的区别

  • display:none :彻底隐藏元素,不占据任何空间,就像它不存在一样,周围的元素会重新排列填充它的位置。
  • visibility:hidden :隐藏元素,但仍然占据原来的空间,只是看不见而已,不影响页面布局。

适用场景

  • 如果想完全移除元素(如动态切换显示),用 display:none
  • 如果只是想让元素不可见但仍占位(如占位加载),用 visibility:hidden

对比项 <link> @import
语法 HTML标签 CSS语法
加载时机 并行加载,不阻塞页面渲染 等页面加载完才加载
兼容性 所有浏览器支持 仅IE5+支持
权重 更高 较低

最佳实践

  • 推荐 <link>,因为加载更快,兼容性更好。
  • 避免 @import,可能导致渲染延迟。

3. position: absoluteposition: fixed 的异同

共同点

  1. 让元素脱离文档流,不占据空间。
  2. 默认会覆盖非定位元素
  3. 它们的 margin 不会和其他元素的 margin 重叠(因为创建了新的 BFC)。

不同点

absolute fixed
相对于最近的非 static 祖先元素定位 相对于**浏览器窗口(viewport)**定位
滚动页面时,元素会跟随滚动 滚动页面时,元素固定不动

适用场景

  • absolute:适合相对某个父容器定位(如弹窗)。
  • fixed:适合固定导航栏、悬浮按钮等。

4. CSS 盒子模型

两种盒子模型

  1. 标准盒模型(W3C)

    • widthheight 仅指 内容区(content)
    • paddingborder 会额外增加盒子大小。
    • 计算方式:总宽度 = width + padding + border + margin
  2. IE盒模型(怪异模式)

    • widthheight 包含 content + padding + border
    • 计算方式:总宽度 = width + margin

如何切换?

css 复制代码
box-sizing: content-box;  /* 标准盒模型(默认) */
box-sizing: border-box;   /* IE盒模型(推荐) */

5. CSS 选择器、继承性、优先级

常见选择器

  • #id.classdiv(标签)、*(通配符)
  • ul > li(子选择器)、li a(后代选择器)
  • a:hover(伪类)、input[type="text"](属性选择器)

可继承的属性

  • fontcolortext-alignline-height
  • 不可继承的marginpaddingborderwidthheight

优先级计算

!important > 行内样式 > #id > .class > 标签 > 通配符

示例

css 复制代码
#header div { ... }  /* 权重:100 + 1 = 101 */
.content div { ... } /* 权重:10 + 1 = 11 */

6. CSS3 新特性

  • 圆角border-radius: 5px;
  • 阴影box-shadow: 2px 2px 5px #000;
  • 渐变background: linear-gradient(red, blue);
  • 动画@keyframes + animation
  • 变形transform: rotate(45deg) scale(1.2);
  • Flex / Grid 布局
  • 媒体查询@media (max-width: 768px) { ... }

7. 为什么要初始化 CSS 样式?

不同浏览器对默认样式的解析不同(如 marginpadding),可能导致页面显示不一致。

解决方案

  1. 简单粗暴(不推荐)

    css 复制代码
    * { margin: 0; padding: 0; }
  2. 推荐方案

    • Normalize.css(保留有用的默认样式,修复浏览器差异)
    • Reset.css(彻底清除默认样式)

8. BFC(块级格式化上下文)

什么是 BFC?

BFC 是一个独立的渲染区域,内部元素不会影响外部布局。

如何触发 BFC?

  • float: left/right
  • position: absolute/fixed
  • display: inline-block/table-cell/flex
  • overflow: hidden/auto/scroll

BFC 的作用

  1. 防止 margin 重叠 (垂直方向相邻元素的 margin 会合并)。
  2. 清除浮动(避免父元素高度塌陷)。
  3. 阻止元素被浮动覆盖

9. CSS Sprites(雪碧图)

是什么?

将多个小图标合并成一张大图,用 background-position 定位显示。

优点

  • 减少 HTTP 请求(提升加载速度)。
  • 节省带宽(合并后图片更小)。

缺点

  • 维护麻烦(新增/修改图标需重新拼图)。
  • 不适合高清屏(可能模糊)。

替代方案

  • SVG 图标(矢量图,高清无损)。
  • Icon Font(如 Font Awesome)。
  • HTTP/2(多路复用,减少请求开销)。

总结

本文涵盖了 CSS 核心概念,包括盒模型、选择器、定位、BFC、CSS3 新特性等,适用于面试复习和日常开发参考。建议结合代码实践加深理解! 🚀

相关推荐
BillKu10 分钟前
scss(sass)中 & 的使用说明
前端·sass·scss
疯狂的沙粒14 分钟前
uni-app 项目支持 vue 3.0 详解及版本升级方案?
前端·vue.js·uni-app
Jiaberrr23 分钟前
uniapp Vue2 获取电量的独家方法:绕过官方插件限制
前端·javascript·uni-app·plus·电量
谢尔登1 小时前
【React】React 18 并发特性
前端·react.js·前端框架
Joker`s smile1 小时前
使用React+ant Table 实现 表格无限循环滚动播放
前端·javascript·react.js
国家不保护废物1 小时前
🌟 React 魔法学院入学指南:从零构建你的第一个魔法阵(项目)!
前端·react.js·架构
import_random1 小时前
[机器学习]svm支持向量机(优势在哪里)
前端
国家不保护废物1 小时前
从刀耕火种到现代框架:DOM编程 vs Vue/React 进化史
前端·vue.js·react.js
陈随易1 小时前
Univer v0.8.0 发布,开源免费版 Google Sheets
前端·后端·程序员
不怎么爱学习的dan1 小时前
实现 ECharts 多国地区可视化方案
前端