gpt4 book ai didi

html - IE11 中的 Flex 元素与元素重叠

转载 作者:太空宇宙 更新时间:2023-11-04 13:34:27 26 4
gpt4 key购买 nike

我有两个 div:

  1. top div 包含一个占据多行的长文本
  2. 下部 div 有 min-heightflex-grow: 1

当我将窗口缩小到出现滚动条时,Chrome 中的所有内容都会正确显示。但在 IE11 中,top div 被缩减为一行,其文本位于 bottom div 之上。

我只能通过为顶部 div 的内容设置一些宽度来修复它(它适用于固定宽度或计算宽度,但不适用于百分比宽度)如何在不设置宽度或使用百分比宽度 (width:100%) 的情况下修复它?

body,
html {
height: 99%;
padding: 0;
margin: 0;
}

.flexcontainer {
width: 25%;
display: flex;
flex-direction: column;
height: 100%;
border: 1px solid lime;
}

.allspace {
flex-grow: 1;
min-height: 300px;
background-color: yellow;
}

.longtext {
background-color: red;
}

.textcontainer {
border: 1px solid magenta;
/*IE work correctly only when specified width. by example: width:calc(25vw - 2px);*/
}
<div class="flexcontainer">
<div class="longtext">
section 1 with long name section 1 with long name section 1 with long name
</div>
<div class="allspace">
all space
</div>
</div>

jsfiddle:https://jsfiddle.net/tkuu28gs/14/

Chrome :

enter image description here

IE11:

enter image description here

最佳答案

IE11 充满了 flex 错误和与其他浏览器的不一致。

在这种情况下,问题的根源是flex-shrink

在应用 flex-shrink: 1(默认设置)后,IE11 会奇怪地渲染 flex 元素,这会导致下方元素与其上方的兄弟元素重叠。其他主流浏览器不会出现此问题。

解决方案是禁用flex-shrink。它修复了 IE11 中的问题,而无需更改其他浏览器中的任何内容。

将此添加到您的代码中:

.longtext {
flex-shrink: 0;
}

revised fiddle


您可能还想查看:

关于html - IE11 中的 Flex 元素与元素重叠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49365551/

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