css响应式之flex布局与grid布局

CSS 布局秘籍:实现响应式页面的七种方法 在前端开发中,掌握多种 CSS 布局方法,并根据项目的需求灵活选择,是实现响应式设计的关键。通过本文介绍的七种布局技巧——Flexbox 布局Grid 布局媒体查询百分比布局rem/em 布局vw/vh 单位和CSS 框架布局方案,你可以更高效地设计出符合不同设备屏幕的响应式页面布局,提升用户体验并优化性能。 阅读详情

1.Flex 布局的核心概念

父元素的常用属性

display: flex
将元素设为 Flex 容器,子元素默认水平排列(行方向)。

.container {
  display: flex;
}

flex-direction定义主轴方向(子元素排列方向):

  • row(默认):水平排列,从左到右。
  • column:垂直排列,从上到下。
  • row-reverse/column-reverse:反向排列。

justify-content控制子元素在主轴上的对齐方式:

  • flex-start(默认):左对齐/上对齐。
  • center:居中。
  • space-between:两端对齐,间隔均分。

align-items控制子元素在交叉轴上的对齐方式:

  • stretch(默认):拉伸填充容器高度/宽度。
  • center:垂直居中。

gap属性

gap 属性用于在 Flex 布局中设置行与列之间的间距,类似于 Grid 布局的 gap。它实际上是 row-gap 和 column-gap 的简写形式。

基本语法

.container {
  display: flex;
  gap: 10px; /* 同时设置行间距和列间距 */
}

单独设置行或列间距

.container {
  display: flex;
  row-gap: 20px; /* 仅设置行间距 */
  column-gap: 10px; /* 仅设置列间距 */
}

注意事项

  • gap 属性在 Flex 布局中的支持情况较新,早期浏览器可能需要前缀或替代方案。

  • 对于旧版浏览器,可以使用 margin 作为替代方案,但需要额外处理边缘情况。


子元素的常用属性

flex-grow
定义子元素的放大比例(默认值为 0,不放大):

.item {
  flex-grow: 1; /* 剩余空间按比例分配 */
}

flex-shrink
定义子元素的缩小比例(默认值为 1,允许缩小)。

flex-basis
设置子元素的初始大小(类似 width,但优先级更高):

.item {
  flex-basis: 100px; /* 初始宽度为 100px */
}

简写 flex
合并 flex-grow、flex-shrink、flex-basis:

.item {
  flex: 1 0 auto; /* 放大比例1,不缩小,初始自动大小 */
}

align-self
覆盖父容器的 align-items,单独设置子元素的对齐方式:

.item {
  align-self: flex-end; /* 底部对齐 */
}


实际应用示例

水平居中布局
父容器设置 justify-content: center 和 align-items: center,子元素水平垂直居中。

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

等高子元素
子元素默认拉伸至容器高度(align-items: stretch),或显式设置相同高度。

响应式导航栏
通过 flex-grow 分配空间,左侧徽标固定宽度,右侧菜单项自动填充剩余空间:

.logo {
  flex: 0 0 120px; /* 不放大,不缩小,固定宽度 */
}
.menu {
  flex: 1; /* 占据剩余空间 */
}


注意事项

  • Flex 布局对子元素的 float、clear、vertical-align 无效。
  • 父容器设置 flex-wrap: wrap 可允许子元素换行(多行布局)。
  • 复杂场景可结合 order 属性调整子元素的显示顺序。

2.grid布局的使用

父盒子(Grid容器)的设置

通过 display: grid 将元素定义为Grid布局容器,其直接子项自动成为Grid项。

.container {
  display: grid;
  grid-template-columns: 100px 200px 1fr; /* 定义列宽 */
  grid-template-rows: 50px auto 100px;     /* 定义行高 */
  gap: 10px;                              /* 行列间距 */
}

定义列和行

  • grid-template-columns 支持的取值类型

    固定值(如 100px) 直接指定列宽为固定像素值,例如 grid-template-columns: 100px 200px; 会创建两列,宽度分别为 100 像素和 200 像素。适用于需要严格控制尺寸的场景。

    百分比(如 30%) 根据网格容器的宽度按百分比分配列宽。例如 grid-template-columns: 30% 70%; 会将容器分为两列,分别占 30% 和 70%。需注意百分比是相对于父容器而非总网格区域。

    弹性单位(fr) fr(fraction)单位按剩余空间的比例分配列宽。例如 grid-template-columns: 1fr 2fr; 表示两列宽度比例为 1:2。若与其他单位混用(如 100px 1fr),会先分配固定值再按比例分配剩余空间。

    函数组合(如 minmax(100px, 1fr)) minmax() 函数定义列宽的最小和最大值。例如 grid-template-columns: minmax(100px, 1fr) 2fr; 表示第一列不小于 100px 且不超过 1fr,第二列固定为 2fr。适合响应式布局中限制动态范围。

    实际应用示例

    混合单位布局

    .container {
      display: grid;
      grid-template-columns: 200px 1fr minmax(300px, 50%);
    }
    

    此代码创建三列:第一列固定 200px,第二列占用剩余空间,第三列最小 300px 且最大为容器宽度的 50%。

    重复列模式 使用 repeat() 函数简化重复模式:

    .container {
      grid-template-columns: repeat(3, 1fr);
    }
    

    生成 3 列等宽布局,每列宽度均为 1fr。也可结合其他单位,如 repeat(2, 100px 1fr) 表示交替两列固定和弹性宽度。

  • grid-template-rows:设置行数和高度,规则同列。

间距控制

  • gap:统一设置行和列间距(缩写为 row-gap 和 column-gap)。
.container {
  gap: 15px;            /* 行列间距均为15px */
  row-gap: 10px;        /* 仅行间距 */
}

对齐方式

  • justify-items:控制所有子项的水平对齐(start/end/center/stretch)。
  • align-items:控制所有子项的垂直对齐(取值同上)。
.container {
  justify-items: center; /* 子项水平居中 */
  align-items: stretch;  /* 子项垂直拉伸填满 */
}

隐式轨道

当子项超出显式定义的轨道时,通过以下属性控制隐式轨道的尺寸:

  • grid-auto-columns:隐式列的宽度(默认为 auto)。
  • grid-auto-rows:隐式行的高度(常用 minmax() 避免内容溢出)。

grid子元素参数详解

在CSS Grid布局中,子元素(Grid Item)可通过以下属性控制其在网格中的位置和尺寸:

网格线的定义

网格线(Grid Lines)是CSS Grid布局中用于划分网格的垂直线和水平线。网格线从1开始编号,垂直方向(列)的网格线从左到右递增,水平方向(行)的网格线从上到下递增。

  • grid-row-start / grid-row-end
    指定子元素在行方向的起始和结束网格线,支持线编号、span关键字或命名线。

    .item {
      grid-row-start: 2;
      grid-row-end: span 2; /* 跨2行 */
    }
    
  • grid-column-start / grid-column-end
    控制列方向的起始和结束网格线,用法与行方向相同。

    .item {
      grid-column-start: sidebar; /* 使用命名线 */
      grid-column-end: 3;
    }
    

元素跨越多个单元格(单元格合并)

  • grid-row / grid-column
    合并行/列的起始和结束位置,格式为 start-line / end-line。

    .item {
      grid-row: 1 / 3;
      grid-column: 2 / span 2;
    }
    

  • grid-area
    综合指定子元素的位置,可接受以下值:

    1. 命名区域(需在父容器中定义grid-template-areas);
    2. 行/列起止线的简写:row-start / column-start / row-end / column-end。
    .item {
      grid-area: header; /* 使用命名区域 */
      /* 或 */
      grid-area: 1 / 2 / 3 / 4; /* 行1到3,列2到4 */
    }
    

对齐控制

  • justify-self
    水平对齐子元素(针对单元格),可选值:start、end、center、stretch。
  • align-self
    垂直对齐子元素,可选值与justify-self类似。
  • place-self
    合并水平和垂直对齐,格式为 align-self justify-self。

层叠顺序

  • z-index
    控制子元素在重叠时的堆叠顺序,数值越高越靠前。

示例代码

.item {
  grid-row: 2 / 4;
  grid-column: 1 / span 2;
  justify-self: center;
  align-self: end;
  z-index: 10;
}

通过合理组合这些属性,可精确控制子元素在网格中的布局和表现。

流方向

  • grid-auto-flow:控制子项的自动排列方向,可选 row(默认横向)、column(纵向)或 dense(密集填充空白)。
.container {
  grid-auto-flow: dense; /* 自动填充空白区域 */
}
玩转flex和grid布局 玩转flex和grid布局,从概念到demo上手 阅读详情

相关推荐

CSS布局进阶:Flex、Grid与响应式设计实战指南

在现代前端开发中,页面布局能力直接决定了项目的结构质量与维护成本。从最早的浮动布局到如今的弹性盒与网格系统,CSS布局理念经历了从“容器适应内容”到“内容定义容器”的本质转变。Flex弹性布局基于主轴与交叉轴模型,擅长解决一维空间内的分配与对齐问题;Grid网格布局则以行列二维体系为核心,通过fr单位和区域命名实现整体骨架的精准划分。两者各有侧重,互为补充,是当前工程实践中最主流的布局方案。配合过渡动画与渐变效果,可以让界面在状态切换时更加自然流畅;而媒体查询与弹性单位(如vw、vh、clamp)则让一套代

weixin_29007135的博客 220

CSS flex布局设置gap时的宽度自适应以及cale、var、--变量的使用

以上写法只需要理解 --gap ,—columns 这种定义属性并且设置为变量的方式,以及calc、var 的使用方式,遇上类似的动态布局也可以处理。/* 计算宽度 4列25% 每个item减去一个gap,但是实际上间距只有3*gap,把多减去的1个gap分摊给4列加给每列 *//* 定义属性并且设置为变量 --gap,--columns */所以采用一下变量的方式去自动计算,每次修改gap后,会自动兼容。/* var 使用变量 *//* 根据需要 */

zhoubin.wang 2633

最强大的 CSS 布局 —— Grid 布局

应该注意的是,当我们定义网格时,我们定义的是网格轨道,而不是网格线。一般而言,是从左到右,从上到下,1,2,3 进行编号排序。一些常见的 CSS 布局,如居中,两列布局,三列布局等等是很容易实现的。:可以简化重复的值。布局是将容器划分成了“行”和“列”,产生了一个个的网格,我们可以将网格元素放在与这些行和列相关的位置上,从而达到我们布局的目的。上面例子的始终都是三列的,但是需求往往希望我们的网格能够固定列宽,并根据容器的宽度来改变列的数量。上面看到的效果中,右侧通常会留下空白,这是我们不希望看到的。

每天都要努力学习哦~~ 1万+

css实现响应式布局

一.什么是响应式布局 响应式布局指的是同一页面在不同屏幕尺寸下有不同的布局。传统的开发方式是PC端开发一套,手机端再开发一套,而使用响应式布局只要开发一套就够了。响应式设计与自适应设计的区别:响应式开发一套界面,通过检测视口分辨率,针对不同客户端在客户端做代码处理,来展现不同的布局和内容;自适应需要开发多套界面,通过检测视口分辨率,来判断当前访问的设备是pc端、平板、手机,从而请求服务层,返回不同的页面。cSS3媒体查询可以让我们针对不同的媒体类型定义不同的样式,当重置浏览器窗口大小的过程中,页面也会根据浏

CYL_2021的博客 8768

生信实战:用bcftools玩转VCF文件处理(从压缩到注释全流程)

本文详细介绍了使用bcftools处理VCF文件的全流程实战指南。从数据准备、压缩索引、信息提取、质量统计到核心的变异过滤与功能注释,手把手教你高效管理基因组变异数据。重点阐述了如何利用bcftools进行VCF文件注释,整合外部数据库信息,为变异位点添加关键的生物学标签,是生物信息学数据分析的必备技能。

rgv23456789的博客 342

ROS2理论与实践_宇树机器人Go2开发指南(文字)

本文介绍了Unitree Go2机器人ROS2开发环境的安装与配置流程。主要内容包括:1)从GitHub克隆unitree_ros2仓库;2)安装ROS2 Foxy版本依赖项;3)编译特定版本的CycloneDDS(0.10.2);4)编译unitree_go和unitree_api功能包;5)网络配置,包括设置静态IP和修改环境变量脚本setup.sh以指定网络接口。文章还提供了本地回环测试的替代方案,并建议配置完成后重启电脑。整个流程涉及ROS2环境切换、网络适配和编译安装等多个技术环节。

Li_Dongyi的博客 4205

CSS布局---运用间隙

CSS中gap并不是新的属性,在CSS3新特性中多列布局为其添加了一个新能力。间隙属性除了运用在CSS栅格之外,CSS3新特性中弹性布局同样可以使用。由于CSS属性较多,且实际运用比我们看起来更复杂,这让我想同大家分享一下今天的主题---运用间隙。

qq_40619809的博客 8422

SAP面试全过程(已拿offer)

周五打电话给我说过了SAP第一轮面试,第二轮要在下周四北京,这几天终于体会到了什么叫做重压下的感觉,越复习越虚,看别人的面经都感觉卧槽这问题也巨难了吧...连去北京可以见妹子这种事情都感觉一点心情都没有。面前准备固然是要有的,但关键是平时就要有料,多想想自己做的项目。当作一个给自己的提醒吧!

cloudray8580的专栏 4万+

CSS3现代布局(Flex/Grid/响应式设计)

根据deepseek的学习计划,整理css3包括Flex、Grid和响应式设计等内容

2301_79189293的博客 2416

上万条对话白分析了?智能客服质检避坑指南:90%团队倒在这些误区

当前客服质检普遍存在投入产出失衡的现象,根源在于十大误区:过度关注单点技术指标而忽视端到端解决能力、僵化的话术模板限制AI应变、数据孤岛阻碍知识进化、盲目追求拟人化牺牲效率、传统整改机制跟不上机器速度等。破局需重构质检体系,包括建立决策树质检法、设计复杂问题测试集、构建实时数据闭环、重置AI专属评价指标、实施分钟级热修复机制等。关键在于将质检从被动纠错升级为主动赋能,通过根因分析、场景化反馈、标准化评分和数据驱动优化,打造"问题诊断-改进-验证"

2202_75469062的博客 1542

基于潜在空间分数匹配的混合型表格数据合成方法

然而,在我们的模型中,β 预计会更小,因为我们不需要嵌入的分布精确地遵循标准高斯分布,因为我们还有一个额外的扩散模型。受 Transformer 在表格数据分类/回归任务中取得成功的启发,我们首先为每一列学习一个独特的标记器,然后将标记(列)级表示输入到 Transformer 中,以捕捉列之间错综复杂的关系。在第 4 节中,我们证明了通过这种设计,TABSYN 可以在不到 20 次函数评估(NFE)的情况下生成高质量的合成表格数据,这比其他基于扩散的表格数据合成方法要少得多。是标记器的可学习参数。

步子哥的博客 853

css布局、flex、响应式、grid

一、常见布局类型 表格布局:原始布局方式,利用表格的特性展示布局,没有页面逻辑且大量冗余代码,现在几乎不用 固定宽:常用960px,移动端缩放表现差,不友好 流式:使用float实现动态浮动,各分辨率下样式无法保证 flex弹性盒子:简洁且强大,主流使用 css栅格布局(grid):将网页分成一系列行和列,将对应内容放入对应区域;新属性兼容性差 二、flex弹性盒子: 1.组成部分:弹...

then啥 672

RK3568平台(音频篇)麦克风PDM接口录音

PDM = Pulse Density Modulation是一种用数字信号表示模拟信号的调制方法。PDM则使用远高于PCM采样率的时钟采样调制模拟分量,只有1位输出,要么为0,要么为1。因此通过PDM方式表示的数字音频也被称为Oversampled 1-bit Audio。相比PDM一连串的0和1,PCM的量化结果更为直观简单。以PDM方式作为模数转换的接收端,需要用到抽取滤波器(Decimation Filter),将密密麻麻的0和1代表的密度分量转换为幅值分量,而PCM方式得到的已经是幅值分量了。

weixin_49303682的博客 5194

CSS笔记——Flex、Grid布局、css响应式布局

Flex 布局是 CSS3 引入的一种新的布局方式,用于创建灵活的、自适应的网页布局,其主要思想是将容器分为一个或多个弹性项目,并且可以通过设置弹性项目的属性来控制其在容器中的排列和分布。弹性盒子布局是一种灵活的布局模式,可以根据容器的大小和内容的大小来自适应地调整布局。使用 Flexbox 布局时,可以将网页中的元素按照一定的比例分配空间,从而实现响应式布局的效果。设置弹性项目的增长因子,用于决定弹性项目的放大比例,默认值为 0。设置弹性项目的收缩因子,用于决定弹性项目的缩小比例,默认值为 1。

bqiuer的博客 898

ARFoundation系列讲解 - 24 锚点

一、添加平面检测和平面可视化 请参考 ARFounnation快速入门-08平面检测 案例 二、添加射线检测 1.在AR Session Origin 组件上添加ARRaycastManager 脚本

a451319296的博客 4877

Go语言全面解析:从入门到精通

Go语言是由Google开发的一种静态类型、编译型编程语言,具有简洁、高效、安全的特点。它特别适合高并发服务、云原生应用和网络编程等场景。Go采用Goroutine和Channel实现轻量级并发,性能接近C/C++。与其他语言相比,Go语法更简洁但类型更严格,编译速度快且跨平台支持好。虽然Go支持多种设计模式和编程范式,但其面向对象实现方式与传统语言不同。标准库丰富且拥有Gin、GORM等企业级框架。核心语法包括包管理、变量声明、函数定义、流程控制等,适合构建高性能后端服务和系统工具。

博哥哥的博客 4925

EveryDay 中的 CSS 布局秘籍:Flex、Grid 与响应式设计全攻略

EveryDay 是一个专注于前端基础学习的个人博客和笔记项目,其中包含了丰富的 CSS 布局知识。本文将带你探索 EveryDay 中关于 Flex 布局、Grid 布局和响应式设计的实用技巧,帮助你轻松掌握现代 CSS 布局的核心方法。 [![CSS 布局秘籍](https://raw.gitcode.com/gh_mirrors/ev/EveryDay/raw/1fdffe5ccdc665

gitblog_00448的博客 1025

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

<figure>标签在响应式图片排版中的高级应用,如何通过 CSS 的grid布局或flex布局实现图片和描述信息在不同屏幕尺寸下的自适应排列?

嘿,前端小伙伴们!在当今这个“万物皆可移动端”的时代,响应式设计已经成了咱们前端开发的“必修课”。而图片作为网页中最吸睛的元素之一,它的排版直接影响着用户体验。今天咱们就来唠唠`figure`标签在响应式图片排版中的高级玩法,再手把手教你用CSS的`grid`布局和`flex`布局,实现图片和描述信息在不同屏幕尺寸下的丝滑自适应排列,让你的网页在各种设备上都能颜值在线!

前端大白话 921

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

CSS Header实战:Grid+Flex混合布局实现响应式页眉

网页头部(Header)是前端布局中最基础也最易出错的模块,其本质是二维空间内的组件编排问题。传统纯Flex方案在多级菜单定位、宽高约束冲突和移动端DOM结构适配上存在固有局限;而现代CSS Grid擅长宏观区域划分,Flex精于微观对齐,二者分层协作可兼顾语义性、可维护性与浏览器兼容性。本文围绕真实项目中的Header实现,解析box-sizing边界控制、align-items垂直居中原理、渐进式响应断点设定及无障碍语义标记等关键技术点,覆盖从PC到折叠屏的全设备适配,并提供可直接集成的HTML/CSS

167

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

CSS3实用笔记:选择器、Flex/Grid布局、动画与响应式

层叠样式表(CSS)是前端开发的核心基础,而CSS3则带来了一套全新的布局与渲染思路。从理解选择器权重、层叠上下文与盒模型开始,才能把握好样式计算的底层逻辑。在布局层面,Flex解决一维分布,Grid主导二维网格,二者协同可应对现代网页的复杂骨架;动画与过渡则需遵循transform/opacity优先的性能准则。响应式方案已从媒体查询演进到容器查询,配合CSS变量实现组件级自适应。本文以实践笔记的形式,系统复盘CSS3的核心知识点与高频踩坑场景,帮助开发者构建可沉淀的CSS知识体系。

weixin_29708043的博客 286

CSS Layout布局核心:Flex、Grid、定位与响应式实战

CSS 布局的本质,是把视觉关系翻译成可执行的空间约束,核心依赖文档流、格式化上下文,以及 Flex 一维弹性、Grid 二维网格和定位的脱离文档流机制。理解这些原理,能减少高度塌陷、外边距折叠、滚动异常与打包后样式错乱,让页面在不同内容和屏幕下保持稳定。典型应用覆盖后台三段式骨架、左右两栏、仪表盘网格与 H5 响应式卡片流。内容落在 Layout 布局的选型、代码模板与排查清单上,帮助前端与页面设计者把布局从试数值变成可维护规则。

weixin_26854555的博客 198

【CSS】CSS 核心:盒模型、BFC/IFC、Flex/Grid 布局、响应式布局、移动端适配(附《思维导图》)

本文系统梳理CSS核心知识体系,涵盖盒模型、BFC/IFC格式化上下文、Flex与Grid现代布局、响应式设计及移动端适配六大模块,结构清晰、原理透彻、实践性强,助你构建扎实的前端布局能力。

小江的记录本 570

CSS的Grid布局与Flex布局

Grid布局是一种CSS布局模式,它使用一个二维的网格系统来定位元素。它允许您将容器分为行和列,然后将元素放置在特定的行和列中。Grid布局非常适合创建复杂的网页布局和对齐元素。 Flex布局是Flexible Box的缩写,称为弹性盒布局,是一种用于为盒状模型提供最大灵活性的布局方式。任何容器都可以被指定为Flex布局,而行内元素也可以使用Flex布局。

日常笔记/总结/系列知识梳理 1532

Ant Design Grid 的 Flex 响应式布局:用 CSS Variables 实现任意比例栅格(5.14.0+)

Ant Design 的栅格(Grid)组件基于 24 等分的 `span` 体系,但 `span` 只能表达 24 分之一的整数倍,无法覆盖"每行恰好放 5 个等宽列""按 40%/20% 分配"这类更精细的比例诉求。`Col` 的响应式对象写法 `xs={{ flex: '100%' }}` 提供了一种更灵活的方案:在每个断点下为 `Col` 指定任意 flex 比例。该能力依赖浏览器对 CS

gitblog_00212的博客 833

前端 CSS 进阶:Flex/Grid 布局、动画效果、响应式设计,打造高颜值页面

前端 CSS 进阶:Flex/Grid 布局、动画效果、响应式设计,打造高颜值页面-摘要

asdaf231的博客 315

CSS【详解】布局 display ( 含 flex 布局,grid 布局,table 布局,float 布局,响应式布局 等)...

display:none 隐藏布局用于隐藏元素,不会占用页面空间;给 html 标签设置 hidden 属性,其效果即将其 display 设置为 none登录后复制 <div hidden>我被隐藏了</div>1.visibility: hidden 也能隐藏元素,但该元素仍会占用页面空间di...

weixin_42415681的博客 366
上一篇: css中容易忘记的重要知识点
下一篇: CSS动态效果之2D、3D与animation动画
会飞的沐光
博客等级 码龄5年 2粉丝 17原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值