讲师中心 微信公众号
AI工具推荐 视频效率加速

为什么CSS Grid中子元素超出高度时不产生滚动条?

轻宇吖_4034

轻宇吖_4034

发布时间:2026-11-06 12:32:28

|

475人浏览过

|

来源于php中文网

原创

grid item 上设 overflow-y: auto 没反应,根本原因是父级行轨道未被约束:1fr 默认等价于 minmax(min-content, 1fr),会撑开以容纳内容最小高度;必须改为 minmax(0, 1fr),并确保 grid 容器有明确高度(如 height 或 max-height),才能使子项内部 overflow 生效。

为什么css grid中子元素超出高度时不产生滚动条?

grid item 上设 overflow-y: auto 没反应?检查父级行轨道是否真被约束

根本原因不是 CSS 写错了,而是 grid-template-rows 用 1fr 时默认等价于 minmax(min-content, 1fr) —— 它会优先撑开以容纳内容最小高度,导致子元素永远“不溢出”。滚动条只在内容真正超出可用空间时才触发。

必须把行轨道改成可收缩的:minmax(0, 1fr)。它允许轨道压缩到 0,把高度控制权交还给子元素内部的 overflow 行为。

  • grid-template-rows: 100px 1fr 80px → 中间行会无限拉伸,哪怕内容超长也不滚动
  • grid-template-rows: 100px minmax(0, 1fr) 80px → 中间行能收缩,子元素才能触发滚动
  • 这个改动只有在 grid 容器本身有明确高度(如 height: 500px 或 max-height: 70vh)时才生效

给 grid item 直接加 height 和 overflow 还是不滚动?确认它是不是块级盒 + 高度没被拉伸

即使你写了 height: 300px; overflow-y: auto,如果该 item 的 align-self 是 stretch(默认值),而父轨道又没约束高度,它仍可能被撑开——此时 height 被忽略,overflow 失效。

更可靠的做法是:不在 item 上硬设 height,而在其内部嵌套一层 <div class="scroller">,并确保:<p><span>立即学习</span>“<a href="https://pan.quark.cn/s/cb6835dc7db1" style="text-decoration: underline !important; color: blue; font-weight: bolder;" rel="nofollow" target="_blank">前端免费学习笔记(深入)</a>”;</p><div class="aritcle_card flexRow"> <div class="artcardd flexRow"> <a class="aritcle_card_img" href="/xiazai/skill11112" title="CSS工具箱(专业版)"><img src="https://img.php.cn/upload/skill/001/246/273/6adaf20e352aa140.jpg" alt="CSS工具箱(专业版)" ></a> <div class="aritcle_card_info flexColumn"> <a href="/xiazai/skill11112" title="CSS工具箱(专业版)">CSS工具箱(专业版)</a> <p>全功能 CSS 工程手册,覆盖性能优化、无障碍、设计系统与跨浏览器兼容。</p> </div> <a href="/xiazai/skill11112" title="CSS工具箱(专业版)" class="aritcle_card_btn flexRow flexcenter"><b></b><span>下载</span> </a> </div> </div> <ul> <li>grid item 本身是块级(默认就是),且未设置 <code>align-self: center/flex-start 等干扰高度计算的值

  • .scroller 设 height: 100%; overflow-y: auto
  • grid item 的父轨道(即 grid-template-rows 对应的那行)已用 minmax(0, 1fr) 或固定值约束
  • 滚动条出现了,但内容被截断或位置偏移?注意滚动条真实占用宽度

    滚动条不是视觉装饰,它会从容器 width 中扣除约 15–17px。当 grid 容器设为 width: 100% 且内容刚好填满时,滚动条一出现,所有 1fr 列宽都会同比例收缩,造成布局跳动。

    这不是 Grid 特有,但在 Grid 中因尺寸联动强,更容易暴露。防御方式包括:

    • 全局让垂直滚动条常驻:html { overflow-y: scroll; },再配 body { width: 100vw; overflow: hidden; }
    • 局部处理:给 grid 容器加 padding-right: 17px,或用 width: calc(100% + 17px); overflow-x: hidden 占位
    • Safari 旧版(iOS 15.3 及更早)可能丢弃 grid-template-areas,建议改用线号定位:header { grid-column: 1 / -1; grid-row: 1; }

    为什么窄屏下整个页面横向滚动?和 Grid 有关,但根子在 body 默认边距

    90% 的意外水平滚动,源头是浏览器给 body 设的默认 margin: 8px。这 16px 水平空间在窄屏下直接触发横向滚动条,哪怕你在 html 上写了 overflow-x: hidden 也无效。

    必须显式重置:

    • body { margin: 0; padding: 0; box-sizing: border-box; }
    • Grid 子项加 min-width: 0(防止长单词/图片撑破列宽)
    • 图片等媒体元素补 max-width: 100%; height: auto;
    • 慎用 auto-fill,它可能生成过宽隐式轨道
    滚动条是否出现,取决于“内容是否真的超出可用空间”,而不是样式有没有写上。Grid 的轨道行为、父容器的高度链、子元素的盒模型状态,三者缺一不可。最容易被忽略的是:没有给 grid 容器设 height 或 max-height,就指望 1fr 自动产生滚动——这时整个轨道链都是塌陷的,overflow 根本没机会工作。

    热门AI工具

    更多
    豆包大模型

    豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

    UpDream
    UpDream Hot

    一款AI视频创作工具,主要用于哔哩哔哩推出的自研AI视频创作工具,适合需要提升相关任务效率的用户。

    DeepSeek

    DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

    讯飞绘文

    讯飞绘文是一款由科大讯飞推出的一站式 AIGC 内容运营平台。

    WorkBuddy

    一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

    Flowith
    Flowith Hot

    Flowith是一款基于画布和智能体工作流的 AI 协作工作空间。

    小橡皮AI

    一款AI工具,主要用于小橡皮一键去AI味,将机器味重的内容改得更有活人感,防止因为 AI 内容被平台打上 AI 标签,以及限流,适合需要提升相关任务效率的用户。

    蛙蛙写作

    一款AI论文写作工具,主要用于超级AI智能写作助手,适合需要提升相关任务效率的用户。

    PixTV
    PixTV Hot

    PixTV是一款面向AIGC内容创作的AI视频生成工具。

    相关专题

    更多
    css
    css

    css是层叠样式表,用来表现HTML或XML等文件样式的计算机语言,不仅可以静态地修饰网页,还可以配合各种脚本语言动态地对网页各元素进行格式化。php中文网还为大家带来html的相关下载资源、相关课程以及相关文章等内容,供大家免费下载使用。

    5456

    2023.06.15

    css居中
    css居中

    css居中:1、通过“margin: 0 auto; text-align: center”实现水平居中;2、通过“display:flex”实现水平居中;3、通过“display:table-cell”和“margin-left”实现居中。本专题为大家提供css居中的相关的文章、下载、课程内容,供大家免费下载体验。

    1177

    2023.07.27

    css如何插入图片
    css如何插入图片

    cssCSS是层叠样式表(Cascading Style Sheets)的缩写。它是一种用于描述网页或应用程序外观和样式的标记语言。CSS可以控制网页的字体、颜色、布局、大小、背景、边框等方面,使得网页的外观更加美观和易于阅读。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

    2058

    2023.07.28

    css超出显示...
    css超出显示...

    在CSS中,当文本内容超出容器的宽度或高度时,可以使用省略号来表示被隐藏的文本内容。本专题为大家提供css超出显示...的相关文章,相关教程,供大家免费体验。

    4146

    2023.08.01

    css字体颜色
    css字体颜色

    CSS中,字体颜色可以通过属性color来设置,用于控制文本的前景色,字体颜色在网页设计中起到很重要的作用,具有以下表现作用:1、提升可读性;2、强调重点信息;3、营造氛围和美感;4、用于呈现品牌标识或与品牌形象相符的风格。

    8625

    2023.08.10

    什么是css
    什么是css

    CSS是层叠样式表(Cascading Style Sheets)的缩写,是一种用于描述网页(或其他基于 XML 的文档)样式与布局的标记语言,CSS的作用和意义如下:1、分离样式和内容;2、页面加载速度优化;3、实现响应式设计;4、确保整个网站的风格和样式保持统一。

    7291

    2023.08.10

    css三角形怎么写
    css三角形怎么写

    CSS可以通过多种方式实现三角形形状,本专题为大家提供css三角形怎么写的相关教程,大家可以免费体验。

    2377

    2023.08.21

    css设置文字颜色
    css设置文字颜色

    CSS(层叠样式表)可以用于设置文字颜色,这样做有以下好处和优势:1、增加网页的可视化效果;2、突出显示某些重要的信息或关键字;3、增强品牌识别度;4、提高网页的可访问性;5、引起不同的情感共鸣。

    3491

    2023.08.22

    DBeaver怎么导入数据
    DBeaver怎么导入数据

    DBeaver数据导入专题,整理Excel、CSV、SQL、TXT等常见文件的数据导入方法,涵盖目标数据库选择、数据表创建、字段映射、数据类型设置及导入参数配置等操作,帮助用户将本地文件中的数据写入数据库,并了解批量导入、重复数据处理和导入失败等常见问题的解决方法。

    20

    2026.11.05

    热门下载

    更多
    网站特效
    /
    网站源码
    /
    网站素材
    /
    前端模板

    精品课程

    更多
    相关推荐
    /
    热门推荐
    /
    最新课程
    Sass 教程
    Sass 教程

    共14课时 | 1.6万人学习

    关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
    php中文网:公益在线php培训,帮助PHP学习者快速成长!
    关注服务号
    PHP中文网订阅号
    每天精选资源文章推送

    Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn