html – 调整视口大小后,Firefox与Chrome的div宽度变化不同

前端之家收集整理的这篇文章主要介绍了html – 调整视口大小后,Firefox与Chrome的div宽度变化不同前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在使用基于flexBox容器的布局缩小视口后,我注意到了一些小差异.以下代码段包含两个容器(.container和.subcontainer)中的一些链接.在Chrome(45 beta)中,无论视口尺寸如何,具有class元素的div都具有相同的宽度.但是,在Firefox(40)中,每个div的宽度根据其内容而变化.
  1. html,body {
  2. margin: 0;
  3. padding: 0;
  4. }
  5. .container {
  6. position: relative;
  7. display: flex;
  8. flex-direction: column;
  9. width: 50%;
  10. }
  11. .element {
  12. flex: 1 0 0;
  13. padding: 0.5em;
  14. text-align: center;
  15. position: relative;
  16. background-color: red;
  17. margin-right: 1em;
  18. }
  19. .subcontainer {
  20. flex: 0 1 auto;
  21. display: flex;
  22. }
  23. .element a {
  24. color: black;
  25. }
  1. <!DOCTYPE html>
  2. <html>
  3.  
  4. <body>
  5. <div class="container">
  6. <div class="subcontainer">
  7. <div class="element"><a>abc</a>
  8. </div>
  9. <div class="element"><a>abcdef</a>
  10. </div>
  11. <div class="element"><a>abcdef</a>
  12. </div>
  13. </div>
  14. </div>
  15. </body>
  16.  
  17. </html>

我认为“运行代码段”功能不允许看到此更改,因此我提供了几个显示差异的GIF:

铬:

火狐:

正如您所看到的,这些框在Chrome中共享相同的宽度,但Firefox非常明显地限制了第一个框,其他框保持了它们的比例.这种差异的原因是什么?我该如何解决?我希望每个盒子都有相同的宽度.这就是使用flex的目的:首先是1 0 0.

谢谢

解决方法

尝试将min-width设置为您需要的任何值,或者只是0px:
  1. .element
  2. {
  3. ...
  4. min-width: 0px;
  5. }

Fiddle

细节

对于Firefox,flex项目默认为min-width:min-content,如here所示

These implementations where implementing a slightly simpler behavior
for this keyword: it computed to min-content on flex items,and it
computes to 0 on everything else.

因此,如果我们为Chrome设置min-width:-webkit-min-content,它将具有相同的不需要的行为 – jsfiddle.

猜你在找的HTML相关文章