iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >Chrome73导致flex布局崩坏的示例分析
  • 835
分享到

Chrome73导致flex布局崩坏的示例分析

2023-06-08 08:06:03 835人浏览 八月长安
摘要

这篇文章给大家分享的是有关Chrome73导致flex布局崩坏的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。现象项目中会存在如下几种嵌套flex结构:<style>  &

这篇文章给大家分享的是有关Chrome73导致flex布局崩坏的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

现象

项目中会存在如下几种嵌套flex结构:

<style>    .card {    width: 200px;    height: 300px;    margin: 20px;    border: 1px solid #999;  }  .flex {    display: flex;    flex-direction: column;  }  .header {    flex: none;    height: 40px;    border-bottom: 1px solid #333;  }  .scroll {    overflow-y: auto;  }  .p {    margin: 10px;    height: 400px;    background-color: rgba(0, 0, 0, 0.2);  }  </styl>  <!-- 布局一 --><div class="card flex">  <div class="header">Header</div>  <div class="flex">    <div class="scroll">      <div class="p"></div>    </div>  </div></div>  <!-- 布局二 --><div class="card flex">  <div class="flex">    <div class="header">Header</div>    <div class="scroll" style="flex-grow:1;">      <div class="p"></div>    </div>  </div></div>

这在Chrome 73之前的实际展示效果如下(手头的Electron&mdash;&mdash;Chrome 69):

Chrome73导致flex布局崩坏的示例分析

都是符合期望的结果,scroll是可以滚动的区域,然而,Chrome 73的展示效果却是:

Chrome73导致flex布局崩坏的示例分析

父元素的高度都被子元素撑开了,导致scroll元素无法滚动。what? why? 纳尼?

原因

究其原因,规范有关高度的解释在这一章节,简单概括就是:

flex元素的最小大小(视主轴方向决定是高还是宽)是内部内容的大小。即,min-height/min-width默认值是“auto”。

emmm...读“规范”千遍,其义自见。当再三理解这个结论后发觉,似乎,新版Chrome的实现是符合规范的!确实,Chrome的此举改动就是为了让浏览器的flex布局行为更贴近规范。

Chrome社区的这个issue:Flexbox rendering changed between chrome 71 and 72,对上面的问题(布局二),进行了激烈的讨论,甚至最终导致了官方的回滚。

至于我们为什么后知后觉,直到73才大面积暴露该问题,下文花絮会展开解释。

不过,跟着规范走是完全的政治正确,怎么说都对!开发者只能顺应潮流去改变。

修复

其实,当看到这个现象后,我的内心并没有经历太大的波动,因为min-width曾经已经给我上过预备课了(详见下文花絮)。所以我很快就找到了解放方式。

找到最外层被撑开的元素,上文两种布局里,都是scroll的直属父元素,对其增加min-height: 0的属性即可修复异常布局。

如果min-height的行为实在无法理解的话,overflow: hidden(非visible)也能达到同样的功效。overflow平时用的比较多,相对会更有体感,如下例:

<div style="height: 200px;overflow: scroll;">  <div style="height: 400px"></div></div>

当父元素设置了overflow:hidden/scroll,展示时,父元素就会隐藏子元素的溢出部分。

当然,flex布局中的overflow,它的实际作用也就是把min-height设置为0。

此外,还可以对子元素,上文示例中即scroll元素,设置height: 100%来修复。但当层级比较多时,需要将该属性一层层往下传递,不够环保。

花絮

问题是顺利修复了,下面是一些插曲~

1. Chrome 71->72->73

这个改动首发于Chrome 72,但为什么直到Chrome 73才被我们注意到?因为Chrome 72发布后,由于反响强烈,Chrome决定先回滚改动,给开发者更多的时间来适应该改动。

然而Chrome 72的发布,以及72的后续回滚发布都发生在中国春节假期期间,没什么用户反馈,对于中国开发者,例如我,完全没注意到这次预警。。。

2. min-width的学前教育

为什么说我已经被min-width提前教育过?

我实现过类似编辑器的tab:

Chrome73导致flex布局崩坏的示例分析

这里就是嵌套的flex横向布局,在默认样式下,滚动区会被子元素撑开,也就是此时,我第一次领略了当初就觉得很奇怪的min-width: 0的写法。

那为什么那时就需要显式声明父元素的min-width呢?此外,这次升级所造成的误伤都是发生在纵向布局的flex上,那横向布局的flex有影响吗?

答案其实很狗血,因为Chrome对于min-width的默认值,从很早期就设置为符合规范的“auto”了。。。

感谢各位的阅读!关于“Chrome73导致flex布局崩坏的示例分析”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

--结束END--

本文标题: Chrome73导致flex布局崩坏的示例分析

本文链接: https://www.lsjlt.com/news/253149.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Chrome73导致flex布局崩坏的示例分析
    这篇文章给大家分享的是有关Chrome73导致flex布局崩坏的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。现象项目中会存在如下几种嵌套flex结构:<style>  &...
    99+
    2023-06-08
  • Flex布局的示例分析
    小编给大家分享一下Flex布局的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!Flex布局基础一,Absolute布局用Flex布局新建Applicati...
    99+
    2023-06-17
  • 使用flex布局的示例分析
    这篇文章主要介绍了使用flex布局的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。Flex布局Flex 是 Flexible Box 的缩写,意为"弹性布局...
    99+
    2023-06-08
  • css中flex弹性布局的示例分析
    这篇文章将为大家详细讲解有关css中flex弹性布局的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。案例基础布局html<ul class="box">&...
    99+
    2023-06-08
  • Flex布局和Grid布局实例分析
    本文小编为大家详细介绍“Flex布局和Grid布局实例分析”,内容详细,步骤清晰,细节处理妥当,希望这篇“Flex布局和Grid布局实例分析”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新...
    99+
    2024-04-02
  • CSS3中display属性Flex布局的示例分析
    这篇文章将为大家详细讲解有关CSS3中display属性Flex布局的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。在设计首页布局的时候,新认识了一种布局方式di...
    99+
    2024-04-02
  • CSS中flex布局实例分析
    这篇文章主要介绍“CSS中flex布局实例分析”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“CSS中flex布局实例分析”文章能帮助大家解决问题。1. 浏览器 fl...
    99+
    2024-04-02
  • CSS3的flex弹性盒模型布局的示例分析
    CSS3的flex弹性盒模型布局的示例分析,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。Flexible Box(弹性盒子)能让页面的分布...
    99+
    2024-04-02
  • HTML布局的示例分析
    这篇文章主要介绍HTML布局的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完! 网站常常以多列显示内容(就像杂志和报纸)。 使用 <div> 元素的 HTML ...
    99+
    2024-04-02
  • Flex布局与缩放比例计算案例分析
    本篇文章为大家展示了Flex布局与缩放比例计算案例分析,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。一、Flex 布局简介Flex 是 Flexible Box 的缩写,意为"弹性布局&q...
    99+
    2023-06-08
  • CSS布局方案的示例分析
    这篇文章给大家分享的是有关CSS布局方案的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。居中布局水平居中1)使用inline-block+text-align原理:先将子...
    99+
    2024-04-02
  • Dreamweaver CS3中布局的示例分析
    小编给大家分享一下Dreamweaver CS3中布局的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一、CSS规则定义之“类型”类型主要针对文本属性进行...
    99+
    2023-06-08
  • CSS中Gird布局的示例分析
    这篇文章主要介绍CSS中Gird布局的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!CSS网格布局是一个二维的基于网格的布局系统, 其目的在于完全改变我们设计基于网络的用户界...
    99+
    2024-04-02
  • PHP架构布局的示例分析
    这篇文章主要介绍PHP架构布局的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!执行流程从上图中看出主要从解析PHPCode到执行主要经过了四个阶段。获取token可以通过Token_get_all('...
    99+
    2023-06-15
  • html布局命名的示例分析
    小编给大家分享一下html布局命名的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧! 头:header 模式:cont...
    99+
    2024-04-02
  • Flex Builder的示例分析
    这篇文章给大家分享的是有关Flex Builder的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。Flex Builder简介Flex Builder是 Macromedia 的 IDE,用于 Flex ...
    99+
    2023-06-17
  • css中sticker-footer布局的示例分析
    这篇文章将为大家详细讲解有关css中sticker-footer布局的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。在网页设计中,Sticky footers设计...
    99+
    2024-04-02
  • css中双飞翼布局和圣杯布局的示例分析
    这篇文章主要为大家展示了“css中双飞翼布局和圣杯布局的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“css中双飞翼布局和圣杯布局的示例分析”这篇文章吧...
    99+
    2024-04-02
  • css布局之BFC模式的示例分析
    这篇文章主要为大家展示了“css布局之BFC模式的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“css布局之BFC模式的示例分析”这篇文章吧。详解BFC...
    99+
    2024-04-02
  • html中响应式布局的示例分析
    这篇文章主要为大家展示了“html中响应式布局的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“html中响应式布局的示例分析”这篇文章吧。 响应式布局...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作