为什么 Chrome 80 会导致这个 grid-template-rows: auto 问题

2024-06-30

有人知道最新的 Chrome 80 更新有什么变化吗?

似乎

grid-template-rows: auto

即使标记中不存在给定行,从现在开始也会占用一些空间。仅发生在 Chrome 80+ 上。

.l-page {
  display: grid;
  grid-template-columns: auto 1fr;
  grid-template-rows: auto auto minmax(1px, 1fr);
  /*  // 1px is needed because of https://stackoverflow.com/questions/49558290/container-scrolls-to-top-when-children-element-height-changes */
  grid-template-areas:
    'sidebar primary_bar'
    'sidebar notification'
    'sidebar content';
  width: 100vw;
  height: 100vh;
}

.l-sidebar {
  grid-area: sidebar;
  padding-right: 10px;
}

.l-notification {
  grid-area: notification;
}

.l-primary-bar {
  grid-area: primary_bar;
}

.l-content {
  grid-area: content;
}
<div class="l-page">
  <div class="l-sidebar">sidebar</div>
  <!--<div class="l-notification"></div>
      <div class="l-primary-bar"></div>-->
  <div class="l-content">content</div>
</div>

也可以看看:https://jsfiddle.net/ju4xvegf/ https://jsfiddle.net/ju4xvegf/

Chrome 80 enter image description here

Firefox 72 enter image description here


我不确定这是一个错误还是 CSS 网格算法中的某些内容发生了变化(需要修改规范),但您可以像下面这样简化您的逻辑:

.l-page {
  display: grid;
  grid-template-columns: 1fr;
  grid-template-rows: auto auto minmax(0, 1fr);
  height: 300px;
  margin:5px;
  border: 1px solid red;
}

.l-sidebar {
  grid-row: span 3;
  grid-column:-3;
  padding-right: 10px;
}

.l-primary-bar {
  order: 1;
}
.l-notification {
  order: 2;
}

.l-content {
  order: 3;
}
<div class="l-page">
  <div class="l-sidebar">sidebar</div>
  <div class="l-content">content</div>
</div>

<div class="l-page">
  <div class="l-sidebar">sidebar</div>
  <div class="l-notification">notif</div>
  <div class="l-primary-bar">bar</div>
  <div class="l-content">content</div>
</div>

<div class="l-page">
  <div class="l-sidebar">sidebar</div>
  <div class="l-notification">notif</div>
  <div class="l-content">content</div>
</div>

<div class="l-page">
  <div class="l-primary-bar">bar</div>
  <div class="l-notification">notif</div>
  <div class="l-sidebar">sidebar</div>
  <div class="l-content">content</div>
</div>

<div class="l-page">
  <div class="l-primary-bar">bar</div>
  <div class="l-notification">notif</div>
  <div class="l-content">content</div>
</div>

UPDATE

使用您的初始代码,如果您更改minmax(1px,1fr)仅与1fr它应该工作正常。

.l-page {
  display: grid;
  grid-template-columns: auto 1fr;
  grid-template-rows: auto auto 1fr;
  grid-template-areas:
    'sidebar primary_bar'
    'sidebar notification'
    'sidebar content';
    height: 300px;
  margin:5px;
  border: 1px solid red;
}

.l-sidebar {
  grid-area: sidebar;
  padding-right: 10px;
}

.l-notification {
  grid-area: notification;
}

.l-primary-bar {
  grid-area: primary_bar;
}

.l-content {
  grid-area: content;
}
<div class="l-page">
  <div class="l-sidebar">sidebar</div>
  <div class="l-content">content</div>
</div>

<div class="l-page">
  <div class="l-sidebar">sidebar</div>
  <div class="l-notification">notif</div>
  <div class="l-primary-bar">bar</div>
  <div class="l-content">content</div>
</div>

<div class="l-page">
  <div class="l-sidebar">sidebar</div>
  <div class="l-notification">notif</div>
  <div class="l-content">content</div>
</div>

<div class="l-page">
  <div class="l-primary-bar">bar</div>
  <div class="l-notification">notif</div>
  <div class="l-sidebar">sidebar</div>
  <div class="l-content">content</div>
</div>

<div class="l-page">
  <div class="l-primary-bar">bar</div>
  <div class="l-notification">notif</div>
  <div class="l-content">content</div>
</div>

看来新版chrome正在解决这个问题minmax(1px,1fr)不同。您可以尝试增加1px慢慢地并注意如何minmax()将使行更大。

注意1fr相当于minmax(auto,1fr) https://github.com/w3c/csswg-drafts/issues/1777 https://github.com/w3c/csswg-drafts/issues/1777

具有类似问题的相关问题:Chrome 80 中的网格模板列计算不一致 https://stackoverflow.com/q/60193734/8620333

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么 Chrome 80 会导致这个 grid-template-rows: auto 问题 的相关文章

  • 使用 selenium 3.8.1 设置 chrome 代理的问题

    我曾经在 chrome 上设置代理 如下面的代码所示 但是当我更新到 selenium 3 8 1 时 代理停止工作 我没有收到任何错误 它只是不使用代理服务器 我不知道为什么 我的 chromedriver 也是最新的 options w
  • 了解 HTML 5 事件拖动

    我不明白为什么在事件拖动中鼠标坐标clientX的返回值总是0或释放鼠标之前的负值 我准备了一个例子 当用户dragstart 鼠标位置正确 结束同样dragend 但是如果你查看控制台drag你会看到之前dragend负值 是正常行为吗
  • 适用于 Chrome 和 Internet Explorer 的 GWT Developer 插件 - 阻止安装的错误

    我尝试安装适用于 Chrome 的 GWT Developer 插件 版本 34 0 1847 131 m 但收到以下错误 此计算机不支持此应用程序 安装已被禁用 检测到以下问题 和 NPAPI 插件此应用程序需要 有没有解决的办法 我已经
  • 多个复选框 - 更改消息“如果要继续,请选中此框”

    我有一个多选复选框表单 我在其中添加了 JS 以确保访问者至少选择一个选项 div class form group options div
  • OpenQA.Selenium.WebDriverException: '未知错误: ChromeDriver 在通过 C# Selenium 发送表情符号时仅支持 BMP 中的字符

    我正在尝试向按键发送表情符号 我尝试通过处理信号 来发送它 但它引发了此异常 OpenQA Selenium WebDriverException unknown error ChromeDriver only supports chara
  • 有人知道 pinterest.com 中的 div 是如何发出的吗?

    我尝试像这样水平渲染我的 div 图像 从左到右 从上到下 但这并不完全正确 想知道是否只是垂直完成每列的渲染 从上到下 从右到左 有人知道如何模仿 复制此页面吗 更新 为了回应下面的答案 我快速搜索了 砖石与同位素 下列post http
  • 阻止 Firefox 在刷新后恢复先前用户输入的状态

    我有一个带有多个复选框的页面 需要表示数据库中的状态 这些复选框是 AJAX 驱动的 因此当选中一个复选框时 就会发送一个请求来更新数据库中的状态 如果他们的视图已过时 则受影响 相关复选框的视图将更新 并通知用户 并且必须重试 当我刷新时
  • 打破弹性项目内的长单词

    我想打破 div2 内的长单词 div2 和 div3 宽度都不能大于父宽度 即 150px 唯一有效的是word break break all但这也会破坏简短的单词 div1 display flex max width 150px h
  • 将画布图像保存到服务器

    我正在尝试将画布图像保存到服务器 我可以保存文件 但它始终是 0 字节 我的代码有什么问题吗 php
  • 冻结 TH 标题和滚动数据

    我有一个 html 表 我想冻结标题行标签以滚动数据 我怎样才能做到这一点 我需要使用Dom吗 谢谢 我的解决方案是使用两个表并固定列宽 下面的表格位于可滚动的 div 中 并且没有标题
  • Webkit 浏览器在确定表格布局中的单元格宽度时不考虑填充:已修复

    我在申请时得到不同的结果table layout fixed到表格并在单元格上使用填充 IE 和 Firefox 似乎可以通过将单元格宽度和填充加在一起来正常工作 Chrome 和 Safari 仅使用单元格宽度 我看到该问题存在一个错误
  • Visual Studio 2013 中的 JavaScript HTML5 CSS3 项目模板

    我刚刚下载了 Visual Studio 2013 Express for Web 我想知道如何部署仅限 JavaScript HTML5 和 CSS3 的项目 我找不到合适的模板或方法来做到这一点 我已经在网上搜索过JavaScript模
  • HTML/CSS:清除中间的浮动元素,而不添加不需要的标签[重复]

    这个问题在这里已经有答案了 大多数 ClearFix 技术都涉及在父容器的最底部添加内容 我最喜欢伪元素方法 因为它不会将不需要的元素添加到 HTML 中 然而 最近我发现我正在处理一个容器 其中有一些孩子漂浮 但不是全部 假设前 2 个子
  • 使用查询字符串使缓存失效,这是不好的做法吗?

    在我制作的网站上 我通常使用查询字符串参数使 CSS 和 JS 的缓存无效 如下所示 注意 这是 chrome 检查器的屏幕截图 这些查询字符串都是由我在渲染到浏览器中时制作的小系统自动附加的 一位朋友现在告诉我 使用查询字符串的缓存效果不
  • 如何调整

    有没有办法制作一个 div 容器可以通过拖放调整大小吗 最好的方法是使用 CSS3 至少 Webkit 和 Gecko 支持它 根据w3c spec http www w3 org TR css3 ui resize div my clas
  • 引导崩溃仅切换一次

    我再次在这里拉扯我的头发 所以我已经使用 jsFiddle 进行了引导崩溃 http jsfiddle net rasreye xtPtH 1 http jsfiddle net rasreye xtPtH 1 但是当我添加到我的网站时 它
  • 将元素粘贴到滚动上固定元素的底部?

    基本上 我想要实现的目标是让辅助导航在滚动时与主导航的底部相遇后立即粘在主导航的底部 我仍在学习 jQuery 并且我已经开始抓狂了 编辑 意识到我没有解释到目前为止我已经到了哪里 该类被添加到元素中 但是它没有固定在主标题下方 而是从视口
  • 属性的状态:已弃用或已过时?

    我是 HTML 5 的新手 有问题需要在diverseW3 HTML 标准化文档获取属性的状态 例如 bgcolor的属性自 HTML 4 01 起 不应再使用该元素 它已被弃用 看 http www w3 org TR html4 pre
  • 如何通过PHP获取div?

    我得到一个页面使用file get contents来自远程服务器 但我想过滤该页面并从中获取一个使用 PHP 具有 text 类的 DIV 我开始于DOMDocument但我现在迷路了 有什么帮助吗 file file get conte
  • 在本地计算机上验证 HTML

    我目前正在尝试学习 HTML 和 Java EE Servlet 编程 我的本地计算机 Orion 应用程序服务器 上运行着一个应用程序服务器 并且我正在使用同一台计算机上运行的浏览器连接到我部署在该服务器上的网页 定向到http loca

随机推荐