尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

html之flex伸缩盒子;grid布局

html之flex伸缩盒子;grid布局
📅 发布时间:2026/7/22 16:01:43

flex伸缩盒子

利用flex伸缩盒子可以把父级下的div的换行去掉,排列在一行中
demo来自微信小程序

先将父级div定义成伸缩盒子,然后子级每份占据1份父类空间

flex简述

flex中三个属性;在后端看来这是flex构造方法的3个入参

flex:<flex-grow><flex-shrink><flex-basis>

分别代表的意思

属性作用默认值
flex-grow有剩余空间时,是否放大0
flex-shrink空间不足时,是否缩小1
flex-basis初始尺寸auto

常用快速值

写法实际等价growshrinkbasis典型用途
flex: initial0 1 auto01auto默认值;不主动放大,可以缩小,初始宽度按 width 或内容决定
flex: auto1 1 auto11auto内容优先,再伸缩;即有空间就长大,不够就缩小,初始宽度按内容(或 width)
flex: none0 0 auto00auto完全固定大小
flex: 00 1 0%010%很少单独使用;特殊简写只有一个数字,那么它表示 grow,basis 自动变成 0%。这里的basis=0%是将在参与flex计算时的初始尺寸当成0,并不是css中的width概念
flex: 11 1 0%110%最常用,平均分配剩余空间
flex: 22 1 0%210%按比例分配剩余空间
flex: 0 0 200px0 0 200px00200px固定宽度(卡片、侧边栏等)

flex-grow代表的是是否瓜分剩余空间

为0代表浏览器不会把剩余空间分配出去;即按照内容本身长度分配;

为1时代表把剩下内容的长度再分配出去;
ps:平均分的是剩余空间,不是整个容器

flex-shrink(空间不足时是否缩小)

这个很好理解,就是内容加起来的长度超过了容器长度,之后会按比例压缩每个元素,让内容可以塞进去;如果不压缩,那么就会出现滚动条;

这个压缩其实分摊多出来的那一部分;
比如多出来100px;
按比例分摊这100px(在原先元素的width上减去)

ps:当shrink相同时,减法结果和按比例乘积结果相同; 以下面的demo为例 A压缩结果= 200 - (200/1200)*120=180 B压缩结果= 200 - (400/1200)*120=160 C压缩结果= 200 - (600/1200)*120=140 但当shrink相同时,比如都为1,那么其实压缩结果就是按当前元素的width*(当前元素的width的占比),正好和这个比例一致了 总权重 = 200*1 + 200*1 + 200*1=600 A压缩结果= 200 - (200/600)*120=200*(1-(120/600)) B压缩结果= 200 - (200/600)*120=200*(1-(120/600)) C压缩结果= 200 - (200/600)*120=200*(1-(120/600))


flex-basis(初始尺寸)

这个很好理解,就是给了一个初始值;
但这里的初始值是指在参与flex计算的尺寸,和css中的width不是一个概念;

比如 flex:0 = flex:0 1 0%;

代表在flex容器计算尺寸时,先当成0,然后让浏览器分配尺寸;

grid布局

flex只是一维的,grid则是二维的;
大白话说flex是一个动态行,grid则是一个有列和行的表格;

我理解在外层容器开启grid,并且定义好列后,内部的元素会自动按照指定列的数量自动排列存放;

这里先简单描述下几个参数
fr(Fraction):它类似于Flex 的 grow,用于控制列的宽度比例。grid-template-columns: 1fr 1fr 1fr;
gap: 控制列之间的距离;类似margin;row-gap:20px; column-gap:40px;

定义3列,并且每列等分容器宽度

<divclass="container"><div>A</div><div>B</div><div>C</div></div>.container{ display:grid; grid-template-columns:1fr 1fr 1fr; gap:10px; } .container>div{ background:#87ceeb; height:80px; }

demo2固定宽度+动态分配

.container{ display:grid; grid-template-columns: 240px 1fr; }<divclass="container"><div>菜单</div><div>内容</div></div>

grid repeat()用法
repeat就是字面重复意思

比如下面2个demo

.container{ display:grid; grid-template-columns: repeat(3,1fr);<!--这个就是单元格之间的距离(不是内容,是单元格边框之间)-->gap:20px; } .container{ display:grid; grid-template-columns: 1fr 1fr 1fr; gap:20px; }

跨列/跨行(合并单元格)

.order{<!--这两个写法都可以上下合并单元格;但实际这个更符合语意-->grid-row: span 3;<!--这个写法是从左边起始单元格的第一根边框线开始到第4根边框钱线中间合并-->grid-row:1 / 4;<!--从当前位置开始左右2个单元格合并-->grid-column:span 2; }

跨行合并,demo中就是订单号所在的3行合并单元格;

相关新闻

  • WinForm集成PDF功能的技术方案与优化实践
  • OptiFDTD应用:光栅耦合器
  • 「干货盘点」IntelliJ IDEA离线开发使用要点(二)

最新新闻

  • 鸿蒙 ArkTS 实战:Class Score Average 从成绩平均计算到成绩统计应用完整解析
  • 哈尔滨欧米茄官方售后服务网络全攻略|官方网站权威公布(2026年7月最新) - 欧米茄售后服务官网
  • DocMind-python-agent-V2:Langgraph与状态机
  • Python毕设项目:基于Python的轻量化智慧医疗预约挂号系统设计 医疗机构线上预约挂号信息化系统 (源码+文档,讲解、调试运行,定制等)
  • 石家庄爱彼手表回收就来毓典奢品汇15131655390 - 毓典奢侈品回收寄卖
  • 鸿蒙 ArkTS 实战:Restaurant Tip Calc 从餐厅小费计算到餐饮分摊应用完整解析

日新闻

  • AI云原生实战05-金融AI上云最难的不是技术,是“不出事“——TCE银行风控架构拆解
  • 2026年GEOSEO优化公司选型深度测评:五大硬核标准严选,这六家重塑搜索增长新格局 - 品牌前沿专家
  • **核验!2026年7月卡地亚香港**售后网点地址及服务电话公告 - 卡地亚服务中心

周新闻

  • SaaS软件行业GEO实践:AI搜索时代的品牌可见性与获客新路径
  • 什么是PCTFE?医药高端包装的“防潮王牌“材料
  • 【JVM调优实战】16-可视化利器-JConsole-VisualVM-JMC

月新闻

  • 2026年6月公司网站搭建最新热门渠道测评:四大低成本/零代码平台对比+避坑
  • 【Linux】Linux arm 编译QT程序,出现expected “}“报错
  • 【MATLAB例程】四基站二维AOA定位与距离辅助增强对比仿真。基于角度观测和测距修正的固定目标平面定位精度分析

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号