css如何让flex子元素按比例分配空间_使用flex-grow实现
技术百科
P粉602998670
发布时间:2026-01-28
浏览: 次 flex-grow 的数值代表剩余空间的分配权重,而非父容器百分比;它按设定比例瓜分减去子元素基础尺寸后的剩余空间,基础尺寸默认为内容宽度或 width 值。
flex-grow 的数值到底代表什么
flex-grow 不是“占父容器百分之几”,而是“剩余空间的分配权重”。比如两个子元素分别设 flex-grow: 2 和 flex-grow: 1,它们会按 2:1 的比例瓜分父容器中**减去所有子元素基础尺寸后的剩余空间**。
基础尺寸默认是子元素自身的 width 或内容宽度(即 flex-basis 默认为 auto)。如果没设宽,又没内容,就可能塌缩——这是常见困惑源头。
- 设
flex-grow: 0→ 不参与剩余空间分配(保持自身尺寸) - 设
flex-grow: 1且其他兄弟也是1→ 均分剩余空间 - 设
flex-grow: 0但显式写了width: 200px→ 它占固定 200px,其余空间由其他可伸缩项分
为什么设置了 flex-grow 却没效果
最常踩的坑:父容器没设 display: flex,或子元素被 float / position: absolute 脱离文档流。另外,flex-grow 只在主轴方向起作用,如果主轴是 column 却指望水平撑开,自然无效。
- 检查父元素是否真有
display: flex(不是inline-flex也能用,但注意 inline 行为) - 确认子元素没有
flex: none、flex-grow: 0覆盖,或被min-width/max-width锁死 - 若子元素含图片或块级内容,记得设
img { max-width: 100% },否则可能溢出挤占计算 - Chrome DevTools 里看 computed 样式,确认
flex-grow值没被继承或重置
按比例分配的几种典型写法
想实现 3:2:1 的宽度比,不是直接写 width: 50% 那种硬编码,而是靠 flex-grow 的相对性:
立即学习“前端免费学习笔记(深入)”;
.container {
display: flex;
}
.item-1 { flex-grow: 3; }
.item-2 { flex-grow: 2; }
.item-3 { flex-grow: 1; }
但如果希望“即使内容很少也保底占一定宽度”,就得配合 flex-basis:
.item-1 { flex: 3 1 200px; } /* grow: 3, shrink: 1, basis: 200px */
.item-2 { flex: 2 1 150px; }
.item-3 { flex: 1 1 100px; }
-
flex: 1是flex: 1 1 0的简写,意味着从零开始分剩余空间 -
flex: 0 0 auto完全不伸缩,适合操作按钮等固定尺寸控件 - 避免混用
width和flex-grow:当flex-basis为auto时,width会影响基础尺寸,进而改变剩余空间量
在响应式中 flex-grow 容易被忽略的点
媒体查询里改 flex-direction 或换主轴后,flex-grow 依然只沿新主轴生效,但开发者常误以为它会自动“转成高度分配”。其实不会——它始终只控制主轴方向的拉伸。
- 竖排(
flex-direction: column)时,flex-grow控制的是高度分配,此时需确保父容器有明确height,否则“剩余空间”为 0 - 移动端小屏下,建议用
flex-wrap: wrap+flex-grow组合,而不是强行让所有项单行挤满 - IE10/11 对
flex-grow支持有 bug(如不识别小数),如需兼容,优先用整数,避开flex-grow: 0.5这类写法
真正要小心的,是把 flex-grow 当成万能等比工具——它依赖剩余空间存在,而剩余空间又取决于 flex-basis、内容尺寸、盒模型和父容器约束。一环没对上,比例就失准。
# ai
# 的是
# 这类
# 这是
# 写了
# 几种
# 只在
# 就得
# css
# 工具
# auto
# 编码
# chrome
# 为什么
# bug
# 继承
# display
# Float
# column
# position
# 默认为
# 他可
# flex
# chrome devtools
# 真有
相关栏目:
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
AI推广<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
SEO优化<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
技术百科<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
谷歌推广<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
百度推广<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
网络营销<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
案例网站<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
精选文章<?muma echo $count; ?>
】
相关推荐
- Go 中 defer 语句在 goroutine
- Windows蓝屏错误0x0000001E怎么修复
- Python解释执行模型_字节码流程说明【指导】
- php和redis连接超时怎么办_phpredis
- 如何使用Golang实现多重错误处理_Golang
- Win11怎么设置快速访问主页_Windows11
- Win11怎么关闭边缘滑动手势_Windows11
- Win11怎么查看电脑配置_Win11硬件配置详细
- Win10 BitLocker加密教程 Win10
- Mac怎么查看活动监视器_理解Mac进程和资源占用
- Windows11怎样开启游戏模式_Windows
- Win11怎么设置声音输出设备_Windows11
- Windows怎样关闭开始菜单推荐广告_Windo
- Win11如何设置文件权限 Win11 NTFS文
- Windows10电脑怎么设置虚拟内存_Win10
- 如何优化Golang Web性能_Golang H
- Win10怎么卸载金山毒霸_Win10彻底卸载金山
- 如何在Golang中处理二进制数据_Golang
- Win11怎么设置多显示器任务栏 Win11扩展任
- Mac怎么设置登录项_Mac管理开机自启动程序【教
- Python字符串操作教程_切片拼接与格式化详解
- 如何优化Golang内存分配与GC调度_Golan
- 如何在 Python 测试中动态配置 @backo
- C#如何使用XPathNavigator高效查询X
- Golang如何实现基本的用户注册_Golang用
- 为什么Go建议使用error接口作为错误返回_Go
- 如何快速验证Golang安装是否成功_运行go v
- c++如何使用std::bitset进行位图算法_
- Win11无法拖拽文件到任务栏怎么办_Win11开
- Python多进程教程_multiprocessi
- 如何使用Golang进行HTTP服务性能测试_测量
- Windows10系统怎么查看IP地址_Win10
- Win11怎么关闭自动调节亮度 Win11禁用内容
- LINUX怎么查看进程_LINUX ps命令查看运
- 如何在 Go 中创建包含映射(map)的切片(sl
- Win10怎么卸载剪映_Win10彻底卸载剪映方法
- Mac的访达(Finder)怎么用_Mac文件管理
- Win11如何设置ipv6 Win11开启IPv6
- php会话怎么开启_session_start函数
- Mac电脑如何恢复出厂设置_Mac抹掉数据并重装系
- Windows驱动无法加载错误解决方法_驱动签名验
- Win11怎么自动隐藏任务栏_Win11全屏显示设
- Win11怎么设置虚拟桌面 Win11新建多桌面切
- 一文详解网站被黑客入侵挂马解决办法
- Python脚本参数接收_sys与argparse
- PHP 中如何在函数内持久化修改引用变量的指向
- php与c语言在嵌入式中有何区别_对比两者在硬件控
- Windows执行文件被SmartScreen拦截
- Win10闹钟铃声怎么自定义 Win10闹钟自定义
- Python数据挖掘进阶教程_分类回归与聚类案例解


QQ客服