蔚来实习一面题:Grid 与 Flex 布局与使用场景对比

最近很多27找实习,大部分面试会问一下flex布局这种基础前端问题,上周有同学反馈蔚来一面有出过,所以小圆不仅整理了flex还整理了grid方便学习以及比较。

在现代前端开发中,CSS 布局系统的核心已从传统的浮动与定位,逐步过渡到 Flexbox 与 Grid。这两种布局方案在现代浏览器中均得到广泛支持,它们在理念上有明显差异,也各自适用于不同的布局场景。本文将系统梳理两者的特性、差异与应用边界,为开发者提供实践层面的参考。

一、布局理念对比

特性维度

Flexbox

CSS Grid

布局维度

一维布局(单行或单列)

二维布局(行与列)

主轴与交叉轴

主轴控制方向,交叉轴自动调整

行列均可精确控制

子元素排列

根据内容自适应排列

基于网格坐标精确定位

应用理念

内容驱动布局

容器驱动布局

典型场景

导航栏、按钮组、响应式组件

整页布局、卡片网格、仪表盘布局

Flexbox 着重解决“一维”问题,即在一条轴线上对齐、分配与伸缩。而 Grid 进一步抽象出“二维”模型,使开发者可以在行与列两个方向上精确控制布局。

二、Flex 布局详解

1. 核心概念

Flex(Flexible Box)布局由容器(Flex Container)与项目(Flex Items)组成。通过设置 display: flex,元素的子节点会按主轴方向进行排列。

2. 主轴与交叉轴

Flex 的布局完全围绕“主轴(main axis)”展开,常用属性如下:

属性

作用

flex-direction

设置主轴方向(row、column、row-reverse、column-reverse)

justify-content

沿主轴方向对齐项目(start、center、space-between 等)

align-items

沿交叉轴方向对齐项目

flex-wrap

控制是否换行

3. 弹性伸缩

flex 属性可同时控制项目的放大、缩小与基础宽度:

.item {
  flex: 1 0 100px; /* 放大比例1,缩小比例0,初始宽度100px */
}

这使得 Flex 在自适应组件响应式导航等场景中极具优势。

4. Flex 的典型应用

  • 水平或垂直居中布局;
  • 多列等分布局;
  • 导航栏、工具栏;
  • 响应式列表(自动换行);
  • 单轴对齐组件(如按钮组、标签页)。

示例:水平垂直居中

.container {
  display: flex;
  justify-content: center;
  align-items: center;
}

三、Grid 布局详解

1. 核心概念

Grid(CSS Grid Layout)是一种二维网格系统,允许开发者同时在行与列上控制元素的位置与尺寸。

定义方式:

.container {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  grid-template-rows: 100px auto 100px;
  gap: 16px;
}

2. 行列定义与网格区域

  • grid-template-columns / grid-template-rows 定义行列数量与尺寸;
  • gap 设置网格间距;
  • 子元素可通过 grid-column 与 grid-row 精确定位。
.item1 {
  grid-column: 1 / 3; /* 跨两列 */
  grid-row: 1 / 2;
}

3. 自动布局与命名区域

Grid 支持显式与隐式网格,甚至可以为区域命名:

.container {
  display: grid;
  grid-template-areas:
    "header header"
    "sidebar main"
    "footer footer";
}
.header { grid-area: header; }
.sidebar { grid-area: sidebar; }

这种语义化布局方式在页面结构较复杂时极具可维护性。

4. Grid 的典型应用

  • 响应式页面主结构(Header / Main / Footer / Sidebar);
  • 图文网格、相册、商品卡片;
  • 仪表盘、后台管理系统;
  • 多维信息可视化布局(如表格、面板矩阵)。

四、两者核心差异分析

对比维度

Flex

Grid

布局维度

一维

二维

控制粒度

相对布局,依赖内容

绝对布局,依赖网格定义

对齐方式

主轴对齐

行列对齐

响应式支持

较强,通过换行和伸缩

强,通过 fr

minmax()

等函数

代码复杂度

简单,适合小型布局

结构化,适合复杂布局

学习曲线

略高

浏览器支持

完全支持

Chrome 57+、Edge 16+、Firefox 52+

五、选择策略与实际使用场景

1. 优先使用 Flex 的场景

  • 元素按一条轴线排布;
  • 内容长度不定、需自适应;
  • UI 组件内部结构(如按钮组、导航条);
  • 小型响应式模块。

2. 优先使用 Grid 的场景

  • 页面级布局;
  • 需要精确控制行列尺寸;
  • 复杂卡片或面板排列;
  • 二维对齐场景(同时按行、列控制)。

3. 混合使用策略

在实际开发中,Flex 与 Grid 常常组合使用

  • 外层用 Grid 控制整体布局;
  • 内层组件用 Flex 控制局部排列。

示例:

.page {
  display: grid;
  grid-template-columns: 240px 1fr;
}

.main {
  display: flex;
  flex-direction: column;
}

这种分层布局方式既能保证整体结构稳定,又能保留组件的自适应能力。

六、总结

特性

Flex

Grid

核心思想

内容驱动的一维布局

容器驱动的二维布局

优势

简单灵活、兼容性强

结构清晰、控制精确

局限

难以处理二维布局

初期学习成本较高

最佳实践

组件级布局

页面级布局

Flex 与 Grid 是现代前端布局体系的两大支柱。掌握两者的差异与结合方式,能够显著提升布局的表达能力与代码可维护性。

  • Flex 更适用于线性流式内容排列
  • Grid 适合复杂、规则的整体布局设计

在实际开发中,需要开发者能够合理地将两者配合使用,在性能与结构清晰度之间取得最佳平衡。

#前端八股文##日常实习##秋招##前端面试##前端#
全部评论
蔚来实习 我感觉面试官都想当场要我了 两天就把我挂了
点赞 回复 分享
发布于 11-29 20:04 江苏

相关推荐

H3C在河南的某合资外包公司,异地社保,最低档,C++、Go双栈开发。项目是成都某大学的一个驻场项目第一期,为期1年。狗看了都摇头的岗位也是直接寄了,理由是甲方觉得不合适。因为是在成都读书所以很清楚成都某大学虽然是大部分二本专业少部分一本专业但是四川省大力扶持招的全是高学历老师还是非常非常学历歧视的。1.自我介绍考虑到C和Go双栈场景,着重介绍了一下本科专业主要做嵌入式,软硬都会。主要发展方向是监控系统,设备数据采集、网络分析和数据可视化。2.做过的项目介绍主要介绍了一下单机采集器的原理和分布式采集器的原理以及对应的架构。各种相关的采集IPMI、SNMP、ICMP、TLS、DNS反查、路由分析、端口扫描这些常见的采集。前端能写,有定制数据大屏、仪表盘的能力。单体、分布式、SOA、微服务都有实践过,做过项目重构框架迁移。有多种数据库的使用经验,做过多数据库兼容,有Web、CLI工具、GUI桌面软件 3端维护的能力。3.目前是新疆在职是吗?成都本地人?为什么去新疆?干什么岗位?做什么项目?电信网络工程师,本地人,因为校招直接把我招走了,没有等其他面试的流程结束。主要做网络运维。4.交接需要多久?正式员工,7-30天。5.Go这边多线程和锁了解吗?了解,多线程在采集器这一块用的相当多。介绍了一下并发原语、GMP模型、CAS自旋锁、Atomic包,然后sync包的Mutex、RWMutex、Once、GroupWait、Cond,go test -race竞态检测,sync.Pool协程池,Channel来实现加锁。6.看你C++、JAVA、Python、Go都会一些,什么水平?C++参加过算法竞赛,懂基础不懂开发,JAVA科班生都学(虽然我不是科班生),学了一年靠这个找到的实习。Python是专业主学的,懂一些深度学习、机器视觉调参。7.前端具体什么水平?Angular 19+RXJS 和 VUE3+Axios都落地过项目,写的时候会用AI辅助能调明白,能封装一些简易的东西,。8.看你做过驻场运开,Shell什么水平?初级。9.OSI七层协议10.TCP三次握手11.Github链接?有什么作品?简历上有。git、svn都会用,并且会部署本地仓库,发布、fork、merge pr都会。因为还没找到IT工作所以没时间发展开源这一块,目前仅是当做公开的仓库使用。12.CSDN链接?因为还没找到IT工作所以没时间去总结一些经验性的博客,仅发过一篇文章,更多的是写自己的私人文档。13.反问环节项目是做什么的?成都某大学的数据中心需要一个做开发的牛马,但是因为编制批不下来所以想找个外包,具体工作直接和成都某大学的老师对接。双非本连异地社保的外包也没资格了吗?
查看13道真题和解析
点赞 评论 收藏
分享
评论
8
17
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务