当前位置: 首页 > 面试题库 >

在Firefox和Chrome 48中使用flexbox出现渲染问题

宋畅
2023-03-14
问题内容

在chrome 47上(正确的行为): 在chrome 47上,div .scroll正确滚动,使用flex调整高度为100%。

在Firefox(错误的行为)上: 在Firefox上,与div一起.scroll使用的是内容高度,并且滚动不正确。

跨浏览器解决此问题的方法是什么?

for (var i = 0; i < 100; i++)

  $(".scroll").append("Dynamic content<br>");


body,

html {

  margin: 0;

  padding: 0;

}

.container {

  box-sizing: border-box;

  position: absolute;

  height: 100%;

  width: 100%;

  display: flex;

  flex-direction: column;

}

.content {

  background: yellow;

  flex: 1;

  display: flex;

  flex-direction: column;

}

.scroll {

  flex: 1 1 auto;

  overflow: scroll;

}


<div class="container">



  <div class="bar">Small</div>



  <div class="content">



    <div>Static content</div>

    <div class="scroll"></div>

    <div>Static content</div>



  </div>



  <div class="footer">Small</div>



</div>

已更新问题, 以区分Chrome 47和Chrome 48。


问题答案:

更新了flexbox规范,使flex项目的默认最小大小等于内容的大小:min-width: auto/ min-height: auto

您可以使用min-width: 0/ 覆盖此设置min-height: 0

.content {
    background: yellow;
    flex: 1;
    display: flex;
    flex-direction: column;

    min-height: 0;           /* NEW */
    min-width: 0;            /* NEW */
}

以下是规范的一些详细信息:

4.5。 弹性项目的隐含最小大小

为了为弹性商品提供更合理的默认最小尺寸,此规范引入了一个新auto值作为CSS 2.1中定义的min-widthmin- height属性的初始值。

更新

Chrome似乎已更新了其渲染行为。Chrome 48现在在最小伸缩大小方面模仿了Firefox。

根据以下链接中的报告,以上解决方案也应在Chrome 48中运行。



 类似资料:
  • 我被一个使用flexbox的测试项目卡住了。我们的目标是构建一个仪表板,其中包含一些卡片列表,并排无限溢出。 我设法做到了这一点,问题是:每个列表都有一个页眉、一个卡片列表和一个页脚,列表高度不能超过父可用高度。如果发生这种情况,则列表只能在卡列表上应用溢出。 在Chrome上运行良好,但在Firefox上...渲染器似乎无法处理内容以这种方式溢出的可能性!我真的很生气。 例子: 代码(也在Plu

  • 当我尝试使用设计视图同时查看activity_main.xml时,我有一个警告,上面写着“渲染问题Android Nougat需要IDE运行Java1.8或更高版本安装受支持的JDK”,但我的计算机上有当前版本的Java。

  • 我发现,如果我们设置一个块级元素的高度为或而没有设置父级的高度为显式值,并且它的块级子级有底部边距,那么它在Chrome中会计算不同的高度,而在Firefox中则不会。对于设置的情况: http://codepen.io/anon/pen/bjgkmr 块的高度将计算为的内容高度。我很困惑为什么应该和一样计算,因为父元素(和标记)没有显式地设置它的高度,而是有不同的高度,因为我们只是直接将高度设置

  • (这是我第二次问这个问题了。上次我得到了一个没有解决问题的答案(那里的答案提到了我试图修复这个问题时偶然留下的一点代码)。我还稍微改变了问题本身——我改变了代码的顺序,把我认为错误更高的部分放在前面,并补充说我正在使用macOS,这可能是它不起作用的原因)。 所以,我刚刚开始学习LWJGL 3,我混合使用了一些教程和示例代码来制作一些东西,应该使用VAOs和VBOs将矩形渲染到洋红屏幕上。没有错误

  • 问题内容: 在过去的六个月中,我一直在与Backbone合作。前两个月很混乱,学习并弄清楚我要如何围绕它构建代码。接下来的4个月,该公司推出了适合生产的应用程序。不要误会我的意思,Backbone使我摆脱了以前标准的成千上万行客户端代码的混乱,但是它使我能够在更短的时间内完成更多宏伟的事情,从而带来了一系列全新的问题。对于我在这里提出的所有问题,有一些简单的解决方案,感觉像是骇客或只是 错误 。我

  • 我是一个使用VBOs渲染数据的新手,当我试图绘制一个立方体时,我遇到了一个非常严重的错误。< br > 这使得程序崩溃。我注意到当我在代码中注释掉渲染方法时,错误消失了,但我似乎找不到错误的来源,因为我是VBO的新手。代码在下面,感谢任何帮助。