亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 網站 > 建站經驗 > 正文

Chrome 73導致flex布局崩壞的分析與解決方法

2024-04-25 20:47:30
字體:
來源:轉載
供稿:網友

現象

項目中會存在如下幾種嵌套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——Chrome 69):

Chrome,flex,布局

都是符合期望的結果,scroll是可以滾動的區域,然而,Chrome 73的展示效果卻是:

Chrome,flex,布局

父元素的高度都被子元素撐開了,導致scroll元素無法滾動。what? why? 納尼?

原因

究其原因,規范有關高度的解釋在這一章節,簡單概括就是:

flex元素的最小大?。ㄒ曋鬏S方向決定是高還是寬)是內部內容的大小。即,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:

Chrome,flex,布局

這里就是嵌套的flex橫向布局,在默認樣式下,滾動區會被子元素撐開,也就是此時,我第一次領略了當初就覺得很奇怪的min-width: 0的寫法。

那為什么那時就需要顯式聲明父元素的min-width呢?此外,這次升級所造成的誤傷都是發生在縱向布局的flex上,那橫向布局的flex有影響嗎?

答案其實很狗血,因為Chrome對于min-width的默認值,從很早期就設置為符合規范的“auto”了。。。

參考

  1. Flexbox sets height of inside element to 0
  2. MDN min-height
  3. MDN min-width

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對VeVb武林網的支持。


注:相關教程知識閱讀請移步到建站經驗頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩在线视频播放| 久久精品99国产精品酒店日本| 国产成人aa精品一区在线播放| 欧美性开放视频| 亚洲人成网7777777国产| 成人免费午夜电影| 亚洲精品中文字幕有码专区| 久久久久久久久久婷婷| 精品视频—区二区三区免费| 日韩**中文字幕毛片| 久久91精品国产91久久久| 亚洲剧情一区二区| 日韩一级裸体免费视频| 伊人久久免费视频| 亚洲国产日韩欧美在线99| 91影视免费在线观看| 国产成人亚洲综合91精品| 97精品在线观看| 国产91在线播放| 精品欧美国产一区二区三区| 日韩精品免费在线观看| 欧美精品久久久久a| 久久人人爽人人爽人人片av高请| 影音先锋日韩有码| 欧美诱惑福利视频| 久热国产精品视频| 97精品国产91久久久久久| 精品伊人久久97| www.国产精品一二区| 亚洲伊人久久综合| 91精品视频在线看| 久久成人精品电影| 日韩暖暖在线视频| 日韩最新在线视频| 欧美午夜丰满在线18影院| 欧美性猛交xxxx黑人| 欧美日韩精品中文字幕| 久久亚洲春色中文字幕| 亚洲精品国产精品自产a区红杏吧| 搡老女人一区二区三区视频tv| 中文字幕v亚洲ⅴv天堂| 日韩av影院在线观看| 亚洲欧美国产日韩中文字幕| 国产一区二区三区丝袜| 日韩欧美国产骚| 主播福利视频一区| 日韩中文字幕视频在线观看| 2021久久精品国产99国产精品| 日韩av中文字幕在线播放| 欧美福利视频网站| 中文字幕在线观看日韩| 不卡av电影在线观看| 日韩欧美黄色动漫| 国产精品网站视频| 亚洲综合小说区| 日韩在线一区二区三区免费视频| 成人免费黄色网| 77777少妇光屁股久久一区| 日韩精品久久久久| 91中文在线视频| 国产小视频国产精品| 丁香五六月婷婷久久激情| 久久99视频精品| 亚洲欧洲一区二区三区在线观看| 久久精品国产免费观看| 午夜精品一区二区三区av| 精品美女久久久久久免费| www.欧美精品| 欧美亚洲成人精品| 久热精品视频在线免费观看| 日韩电视剧免费观看网站| 日本精品中文字幕| 国产精品自产拍高潮在线观看| 欧美亚洲成人免费| 国内偷自视频区视频综合| 日韩电影中文字幕| 青青久久aⅴ北条麻妃| 国内免费久久久久久久久久久| 国产精品久久一区主播| 亚洲免费小视频| 国产69精品久久久久99| 久久久久久久久中文字幕| 国产精品久久久久久久久男| 国产精品久久久久久久久久东京| 亚洲成人黄色网| 日韩精品中文在线观看| 一区二区三区视频免费| 精品国产成人在线| 国产成人精品在线播放| 亚洲视频在线视频| 精品国产拍在线观看| 亚洲视频在线播放| 在线精品国产欧美| 91精品国产自产91精品| 国产成人a亚洲精品| 久久综合免费视频| 久久777国产线看观看精品| 最新日韩中文字幕| 国内精品视频久久| 欧美性猛交xxxx乱大交| 日韩美女在线看| 亚洲一二在线观看| 久久久久久久色| 日韩人在线观看| 中文字幕日韩专区| 欧美大片第1页| 欧美日韩福利在线观看| 欧美电影在线播放| 久久精品视频99| 久久久综合av| 2019亚洲男人天堂| 日韩av中文字幕在线| 国产精品h片在线播放| 日韩免费看的电影电视剧大全| 久久精品国产亚洲一区二区| 亚洲sss综合天堂久久| 欧美性猛交xxxxx免费看| 欧美性理论片在线观看片免费| 欧美性视频在线| 成人亚洲欧美一区二区三区| 欧美精品在线视频观看| 国产69精品久久久久99| 欧美激情精品久久久久久大尺度| 精品亚洲一区二区三区在线观看| 亚洲成色999久久网站| 亚洲国产成人在线播放| 欧美激情三级免费| 欧美日韩中文字幕综合视频| 欧美猛交ⅹxxx乱大交视频| 亚洲免费电影一区| 国产欧美日韩视频| 性色av一区二区三区在线观看| 91欧美激情另类亚洲| 日本aⅴ大伊香蕉精品视频| 日本精品视频网站| 97av视频在线| 另类图片亚洲另类| 国产精品久久一| 久久av资源网站| 久久亚洲综合国产精品99麻豆精品福利| 91精品国产色综合| 成人黄色在线免费| 91中文字幕一区| 亚洲午夜av久久乱码| 久久九九有精品国产23| 精品动漫一区二区| 国产精品欧美久久久| 亚洲最新av网址| 国产精品视频公开费视频| 久久久久这里只有精品| 日韩视频欧美视频| 亚洲欧美变态国产另类| 欧美激情亚洲国产| 国产精品视频久久久久| 亚洲福利视频免费观看| 欧美一级片免费在线| 欧美日韩中文字幕| 日韩美女视频免费看| 国产午夜精品一区理论片飘花| 国产精品啪视频| 亚洲综合成人婷婷小说| 78色国产精品| 日本久久精品视频| 亚洲综合中文字幕在线观看|