gpt4 book ai didi

css - flexbox 的视口(viewport)高度继承(Chrome 中的不一致)‽

转载 作者:行者123 更新时间:2023-11-28 09:49:35 25 4
gpt4 key购买 nike

编辑:从 Chrome 34 开始,下面的构造将按预期正确呈现。由此可知,它实际上早期 Chrome 版本中的一个错误,并且这个相对简单的 CSS 简单地有效。


所以我刚刚发现了viewport-percentage lengths我认为他们会通过使用 flex-box 的流畅的响应式布局测试来完成。出乎意料的是,Firefox 和 Internet Explorer 呈现的效果完全相同,正如预期的那样。这一次,Chrome 拒绝按我说的去做。

我想要:没有滚动条,所有 div 元素根据父级改变大小,使用 height: 100%,即使没有内容也可见框布局,插入 block -将内容分级到布局中。

说具体一点原因,就是父元素的高度好像没有被继承。在这种情况下,我希望内部元素的 height: 100% 产生父元素的高度,它本身是 70vh(等于视口(viewport)高度的 70% ).

如果内部没有 div,Chrome 根本不会显示该元素(与 FF/IE 不同),就像它们根本不是 block 元素一样(没有高度空)。

请告诉我:

  • 它是一个未记录的 Chrome 错误(还是 Webkit 需要额外的属性)?
  • 如果不是错误:FF 和 IE 出现这种行为的原因是什么(看似正确)?
  • flex-direction: column 会不会是问题所在(修改元素流)?

毕竟,它说 I can use it .


这是代码:http://jsfiddle.net/ZPRdh/

这是一个效果图:

rendering in browsers


编辑

看来 flex-box 与这个问题无关。以下 HTML 页面重现了布局思想,并且在 IE 和 FF 中呈现相同,但在 Chrome 中呈现不同:

<!DOCTYPE html>
<html>
<head>
<title>stackoverflow.com/questions/19450503/</title>
<style type="text/css">
body{background-color:#000;margin:0;font:normal 4em sans-serif;color:#888;}
header,section,footer{overflow:hidden;}
header,section,footer,article,figure{display:block;margin:0;padding:0;}
header {background-color:#333;height:20vh;}
section{background-color:#555;height:70vh;}
footer {background-color:#777;height:10vh;}
article{background-color:#999;width:20vmin;height:20vmin;}
figure {background-color:#BBB;width:50%;height:50%;}
</style>
</head>
<body>
<header></header>
<section>
<article>
<figure></figure>
</article>
</section>
<footer></footer>
</body>
</html>

要么我(和其他人)在这里没有得到一些基本的东西,要么 Chrome 中确实存在意外的不一致。

最佳答案

我不确定这是错误还是功能,但 Chrome(和 Opera 使用 Presto)不会像处理元素的实际大小(列方向的高度,行方向的宽度)。这就是为什么百分比没有按您预期的那样工作:中间元素的高度被视为刚好足以包含您的 4 行文本。

如果您需要子项来填充 flex 元素,您需要将其提升为 flex 容器(尽管在您的情况下这不太合适)。

http://jsfiddle.net/ZPRdh/3/

.b {
height:70vh;
background-color:#555;
display: flex;
flex-direction: column;
align-items: flex-start;
justify-content: flex-start;
}

.b>div:nth-child(1) {
width:50%;
height:30%;
flex: 30%;
background-color:#AAA;
}
.b>div:nth-child(2) {
width:40%;
height:40%;
flex: 40%;
background-color:#CCC;
}
.b>div:nth-child(3) {
width:30%;
height:30%;
flex: 30%;
background-color:#EEE;
}

关于css - flexbox 的视口(viewport)高度继承(Chrome 中的不一致)‽,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19450503/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com