fr单位在Flex父容器中失效的根本原因是缺乏高度上下文,即父容器未设置明确高度(如height或min-height),导致Grid子项高度为0或auto,使1fr无法计算;必须满足父Flex有交叉轴尺寸、align-items: stretch且Grid容器有块级尺寸基础三个条件。
fr单位在Flex父容器里不计算剩余空间,根本原因是没高度上下文
fr不是“按比例切容器宽高”,而是“把当前容器的可用空间按份数分”。如果父Flex容器没给Grid子项分配明确的高度(比如用
但自身没高度),那Grid容器的
就可能是
或
,
自然无从算起。
常见错误现象:
写得再标准,第二行内容也挤成一条线;开发者工具里
明明亮着,但Computed面板里
是
。
别只看Styles面板——必须打开Computed标签页,确认
最终值是
,且
不是
或远小于预期
临时加
和
,看子项是否开始按行列排列;若仍无变化,说明Grid逻辑根本没触发
父Flex容器本身必须有明确高度约束,例如
或
,不能只靠内容撑开
Flex父级下Grid容器生效的三个硬性条件
缺一不可。少一个,
就退化成
,布局行为不可控。
父Flex项需保持
(默认值),且父Flex容器自身有交叉轴尺寸:比如Flex方向是
,那就要有明确的
或
Grid容器自身要有块级尺寸基础:不能只写
就完事,要加
、
或
防文字撑破
Grid定义不能全靠
:比如
在无高度上下文时直接失效;建议至少设一个固定轨道,或搭配
嵌套结构中display切换为什么看起来“失效”
不是CSS被忽略,是选择器特异性压过了媒体查询里的规则。比如父容器写了
,媒体查询里只写
,后者永远赢不了前者。
使用HTML,CSS,JavaScript开发Android应用程序 英文文字pdf版附源文件
如果你了解HTML,CSS和JavaScript,您已经拥有所需的工具开发Android应用程序。本动手本书展示了如何使用这些开源web标准设计和建造,可适应任何Android设备的应用程序 - 无需使用Java。您将学习如何创建一个在您选择的平台的Android友好的网络应用程序,然后转换与自由PhoneGap框架到一个原生的Android应用程序。了解为什么设备无关的移动应用是未来的潮流,并开始构建应用程序,提供更
下载
立即学习
“
前端免费学习笔记(深入)
”;
检查Computed面板里
最终值——如果不是你期望的
或
,大概率是选择器冲突
媒体查询内规则的选择器特异性必须≥原始规则:比如原始是
,媒体查询就得写
或
,不能偷懒只写
避免在同一个元素上反复切
:Flex → Grid → Flex容易因尺寸塌陷导致状态错乱;优先用
做能力检测,而不是纯媒体查询硬切
Chrome和Firefox对嵌套flex+grid的min-height处理不一致
Chrome新版默认给Flex子项加了
,Firefox还守着
老规范。结果就是同一段代码,Chrome里Grid子项能撑开,Firefox里直接看不见。
只要子容器是
且在Flex父级里,它的样式里必须显式写
同理,水平方向防溢出要加
,尤其当子Grid里有长文本或图片时
别依赖
——它在Flex上下文中不可靠;
+
才是稳定组合
实际调试时最容易卡住的点,往往不是
写错了,而是父Flex容器连自己有没有高度都说不清。先盯死Computed里的
和
两个值,比反复改
数字管用得多。
align-items: stretchheight0pxauto1frgrid-template-rows: 1fr 2frdisplay: gridheight0pxdisplaygridheight0border: 1px solid redmin-height: 100pxmin-height: 300pxheight: 100vhfrautoalign-items: stretchrowheightmin-heightdisplay: gridwidth: 100%flex: 1min-width: 0frgrid-template-rows: 1fr 1frminmax(0, 1fr)main .grid-container { display: grid; }.grid-container { display: flex; }displayflexgridsection .containersection .container.container.flex-layout.containerdisplay@supportsmin-height: automin-height: 0display: gridmin-height: 0min-width: 0height: 100%flex: 1min-height: 0grid-template-rowsheightdisplayfr