css 想实现固定列宽加自适应列宽怎么办_grid-template-columns 固定值加 1fr

发布时间 - 2026-01-23 00:00:00    点击率:
grid-template-columns 混用固定值和 1fr 是标准且推荐的做法;例如三列布局可写为 200px 120px 1fr,其中 1fr 分配容器宽度减去固定列后的可用自由空间,多 fr 按比例分配,需确保父容器设 display: grid 且有明确宽度。

可以,grid-template-columns 混用固定值和 1fr 是标准且推荐的做法,浏览器支持良好,无需 polyfill。

怎么写 grid-template-columns 实现固定列

+ 自适应列

直接在 grid-template-columns 中按顺序写入具体像素/百分比值和 1fr 即可。例如三列布局:第一列固定 200px,第二列固定 120px,剩余空间给第三列:

grid-template-columns: 200px 120px 1fr;

注意:1fr 不会“填满剩余所有空隙”,它只分配**可用的自由空间**(即容器宽度减去所有固定列宽后的剩余部分);如果还有其他 fr 单位,它们会按比例瓜分该剩余空间。

常见错误:1fr 没生效或列宽异常

多数问题出在父容器或 Grid 本身未满足基本渲染条件:

  • 父容器没有设置 width 或被内容撑开,导致 1fr 计算基准为 0
  • 忘了给容器声明 display: grid
  • 设置了 min-width: fit-contentwidth: max-content 等破坏弹性行为的样式
  • 子元素设置了 widthmin-width 强制覆盖 Grid 分配逻辑

更灵活的场景:固定列 + 多个自适应列

比如左侧菜单固定 240px,右侧主内容区再分两栏等宽(各占剩余空间一半):

grid-template-columns: 240px 1fr 1fr;

或者想让中间列优先占更多空间(如 2 份),右侧列占 1 份:

grid-template-columns: 240px 2fr 1fr;

此时注意:所有 fr 的总份数不影响最终宽度,只影响比例;2fr 1fr6fr 3fr 效果完全一样。

和 table / flex 布局的关键区别

Grid 的 1fr 是基于**网格容器的可用内宽**计算,不依赖子项内容长度;而 flex: 1 在 Flexbox 中虽然也常用于自适应,但若子项有固有宽度(如图片、长文本),可能触发最小尺寸限制,导致实际伸缩不如 Grid 可控。

另外,Grid 允许你明确控制行列关系(比如跨列、对齐方式),而纯 flex 往往需要嵌套才能模拟多维布局——这点在固定列+自适应列的后台管理系统中特别明显。

真正容易被忽略的是:当容器本身宽度随视口变化时(比如响应式),1fr 对应的像素值是动态重算的,但固定列(如 200px)始终不变——这意味着小屏下可能出现横向滚动或内容挤压,需要配合 minmax() 或媒体查询做兜底。


# css  # 浏览器  # 区别  # display  # flex  # table  # 自适应  # 多维  # 按比例  # 的是  # 多个  # 管理系统  # 想让  # 可能出现  # 出在  # 它只 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: JavaScript常见的五种数组去重的方式  Laravel如何使用Facades(门面)及其工作原理_Laravel门面模式与底层机制  Laravel如何实现事件和监听器?(Event & Listener实战)  网站制作报价单模板图片,小松挖机官方网站报价?  Laravel如何为API生成Swagger或OpenAPI文档  laravel怎么实现图片的压缩和裁剪_laravel图片压缩与裁剪方法  使用C语言编写圣诞表白程序  韩国服务器如何优化跨境访问实现高效连接?  如何在云虚拟主机上快速搭建个人网站?  免费视频制作网站,更新又快又好的免费电影网站?  香港服务器部署网站为何提示未备案?  java获取注册ip实例  js代码实现下拉菜单【推荐】  如何在阿里云服务器自主搭建网站?  Thinkphp 中 distinct 的用法解析  如何在云主机上快速搭建多站点网站?  高性能网站服务器部署指南:稳定运行与安全配置优化方案  如何在阿里云域名上完成建站全流程?  Laravel如何创建和注册中间件_Laravel中间件编写与应用流程  怎么制作网站设计模板图片,有电商商品详情页面的免费模板素材网站推荐吗?  如何在橙子建站中快速调整背景颜色?  Java垃圾回收器的方法和原理总结  Laravel如何获取当前登录用户信息_Laravel Auth门面使用与Session用户读取【技巧】  Android中AutoCompleteTextView自动提示  打开php文件提示内存不足_怎么调整php内存限制【解决方案】  如何在阿里云完成域名注册与建站?  如何在IIS中配置站点IP、端口及主机头?  Edge浏览器提示“由你的组织管理”怎么解决_去除浏览器托管提示【修复】  香港代理服务器配置指南:高匿IP选择、跨境加速与SEO优化技巧  INTERNET浏览器怎样恢复关闭标签页_INTERNET浏览器标签恢复快捷键与方法【指南】  Laravel怎么调用外部API_Laravel Http Client客户端使用  edge浏览器无法安装扩展 edge浏览器插件安装失败【解决方法】  关于BootStrap modal 在IOS9中不能弹出的解决方法(IOS 9 bootstrap modal ios 9 noticework)  Laravel怎么使用Intervention Image库处理图片上传和缩放  网站建设整体流程解析,建站其实很容易!  Laravel Fortify是什么,和Jetstream有什么关系  Laravel怎么创建自己的包(Package)_Laravel扩展包开发入门到发布  Windows10电脑怎么设置虚拟光驱_Win10右键装载ISO镜像文件  如何基于云服务器快速搭建个人网站?  laravel怎么用DB facade执行原生SQL查询_laravel DB facade原生SQL执行方法  深圳防火门网站制作公司,深圳中天明防火门怎么编码?  轻松掌握MySQL函数中的last_insert_id()  Laravel怎么连接多个数据库_Laravel多数据库连接配置  如何安全更换建站之星模板并保留数据?  WordPress 子目录安装中正确处理脚本路径的完整指南  香港服务器网站生成指南:免费资源整合与高速稳定配置方案  高配服务器限时抢购:企业级配置与回收服务一站式优惠方案  详解免费开源的DotNet二维码操作组件ThoughtWorks.QRCode(.NET组件介绍之四)  如何快速配置高效服务器建站软件?  如何在IIS7中新建站点?详细步骤解析