css 想快速实现两栏可伸缩布局怎么办_利用 css flex 设置主副栏 flex-grow
技术百科
P粉602998670
发布时间:2026-01-28
浏览: 次 主栏设 flex: 1 0 0(可增长、不收缩、无基准宽),副栏设 flex: 0 0 280px(不增长、不收缩、固定基准宽),容器需 display: flex 且明确 flex-direction;默认 flex-shrink: 1 会导致主栏被压缩,故必须显式禁用。
用 flex-grow 实现主副栏自动伸缩的关键逻辑
主栏占剩余空间、副栏固定宽度(或按比例收缩),核心不是给主栏设 flex: 1 就完事,而是要明确谁「不收缩」、谁「可增长」。默认情况下所有 flex 项都可能压缩(flex-shrink: 1),如果副栏内容多又没限制,它会把主栏挤变形。
- 主栏设
flex-grow: 1,且显式加flex-shrink: 0防被压缩 - 副栏设固定宽(如
width: 280px)或用flex: 0锁死尺寸
0 auto
- 容器必须有
display: flex和明确的flex-direction: row(默认就是)
为什么只写 flex: 1 常常失效
flex: 1 是 flex-grow: 1 + flex-shrink: 1 + flex-basis: 0 的简写。问题出在 flex-shrink: 1 —— 当容器宽度不够时,浏览器会按比例压缩所有 flex 项,包括你本想撑满的主栏。
- 副栏图片/文字过长 → 触发整体压缩 → 主栏变窄甚至换行
- 解决办法:主栏改用
flex: 1 0 0(即flex-grow: 1,flex-shrink: 0,flex-basis: 0) - 副栏用
flex: 0 0 280px比单纯width更稳妥,避免 margin/padding 干扰计算
完整可运行的两栏 flex 布局代码
.container {
display: flex;
}
.main {
flex: 1 0 0; /* 可增长、不收缩、无初始基准宽 */
}
.aside {
flex: 0 0 280px; /* 不增长、不收缩、基准宽 280px */
}移动端适配时容易漏掉的点
flex 布局在小屏下直接堆叠两栏很常见,但很多人忘了关掉 flex-shrink 的副作用:即使写了 @media 切成 column,若主栏仍带 flex-shrink: 1,在某些安卓 WebView 中仍可能异常压缩。
- 响应式切换时,建议用
flex-direction: column+ 重置flex值,例如:flex: 1 1 auto - 副栏在小屏下若隐藏,别只靠
display: none,否则 flex 容器仍按两栏计算——应配合flex: 0 0 0或移除元素 - iOS Safari 对
flex-basis: 0渲染略保守,加min-width: 0给主栏能进一步防溢出
主副栏伸缩看着简单,真正卡住的往往不是语法,而是 flex-shrink 默认开启和 flex-basis 的隐式行为。动手前先想清楚:谁该让,谁不让。
立即学习“前端免费学习笔记(深入)”;
# ai
# 会把
# 很多人
# 写了
# 看着
# 解决办法
# safari
# 切成
# 浏览器
# css
# 出在
# auto
# 堆
# 为什么
# ios
# display
# 安卓
# 或用
# webview
# column
# padding
# 又没
# flex
# 移动端适配
# margin
# 本想
相关栏目:
<?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; ?>
】
相关推荐
- Win11搜索不到蓝牙耳机怎么办 Win11蓝牙驱
- Windows10蓝屏代码DPC_WATCHDOG
- Linux如何挂载新硬盘_Linux磁盘分区格式化
- Win11笔记本怎么看电池健康度_Win11电池报
- 用lighttpd能运行php吗_lighttpd
- 如何使用Golang写入二进制文件_Golang
- Go语言中CookieJar的持久化机制解析:内存
- c++中的Tag Dispatching是什么_c
- Win11如何关闭小娜Cortana Win11禁
- Win10系统怎么查看端口状态_Windows10
- PythonFastAPI项目实战教程_API接口
- Win11任务栏颜色怎么改_Win11自定义任务栏
- Django 密码修改后会话失效的解决方案
- Win11怎样安装网易云音乐_Win11安装网易云
- Windows10如何删除恢复分区_Win10 D
- Win11怎么设置触控板手势_Windows11三
- Windows10系统怎么查看系统版本_Win10
- MAC怎么解压RAR格式文件_MAC第三方解压工具
- 如何使用Golang实现函数指针_函数变量与回调示
- Win11任务栏天气怎么关闭 Win11隐藏天气小
- Win11怎么开启游戏模式_Win11优化游戏帧数
- Go语言中正确反序列化多个同级XML元素为结构体切
- Win11怎么关闭系统透明度_Windows11个
- 如何在包含多值的列中精准搜索指定演员?
- 如何在Mac上搭建Golang开发环境_使用Hom
- Win11怎么连接蓝牙耳机_Win11蓝牙设备配对
- 获取 PHP 文件最后修改时间的正确方法
- 如何在JavaScript中动态拼接PHP的bas
- php怎么下载安装后测试是否成功_简单脚本验证方法
- Windows10怎么备份注册表_Windows1
- Windows10怎样连接蓝牙设备_Windows
- Win10如何更改网络连接_Windows10以太
- 如何在Golang中实现微服务服务拆分_Golan
- Win10怎样安装PPT模板_Win10安装PPT
- windows系统找不到无线网络怎么办_windo
- 如何在Golang中处理URL参数_Golang
- Win11怎么激活Windows10_Win11激
- Win11关机快捷键是什么_Win11快速关机方法
- Win11怎么查看显卡温度 Win11任务管理器查
- Win11无法识别耳机怎么办_解决Win11插耳机
- 如何使用Golang构建基础消息队列模拟_Gola
- php中$this和::能混用吗_对象与静态作用域
- 如何使用Golang实现RPC序列化与反序列化_G
- php和redis连接超时怎么办_phpredis
- Mac的Time Machine怎么用_Mac系统
- C++如何使用std::async进行异步编程?(
- Win11怎么清理C盘下载文件夹_Win11清理下
- Windows10无法识别USB设备描述符请求失败
- Win11如何开启telnet服务 Win11启用
- Python函数参数高级用法_默认值与可变参数解析


QQ客服