提问人:spidey677 提问时间:3/10/2022 最后编辑:Kameronspidey677 更新时间:3/10/2022 访问量:181
CSS:Flex 在 IE11 中不为 div 保持相同的高度
CSS: Flex doesn't keep same height for divs in IE11
问:
我目前正在显示 3 个图块,这些图块会根据哪个图块的内容最多来调整并保持相同的高度。display: flex;
下面的HTML / CSS适用于除IE11以外的所有浏览器,我无法弄清楚为什么。
我试着添加到我的班级中,但这会使所有容器的高度保持不变,并且还提高了高度,所以这不是我想要的。min-height: 100vh;
richTextOne
min-height: inherit;
在我的班级中,使容器不都具有相同的相同高度。每个图块 div 中的高度与其中的内容量相同。richTextOne
任何帮助都不胜感激。
谢谢!
.flex-box {
width: 100%;
min-height: 345px;
display: flex;
flex-direction: row;
}
.tile {
display: flex;
flex-direction: column;
width: 348px;
padding-bottom: 0px;
margin-left: 1px;
margin-right: 61px;
}
.richTextOne {
flex: 1 auto;
padding-top: 35px;
padding-left: 24px;
padding-right: 11px;
}
<!-- Flex rules will automatically sync height of all div.tile boxes -->
<div class=“flex-box”>
<!--/* Tile 1 */-->
<div class=“tile”>
<div class="richTextOne">
<p>blah blah blah</p>
</div>
</div>
<!--/* Tile 2 */-->
<div class=“tile”>
<div class="richTextOne">
<p>blah</p>
</div>
</div>
<!--/* Tile 3 */-->
<div class=“tile”>
<div class="richTextOne">
<p>blah blah blah blah blah blah blah blah blah</p>
</div>
</div>
</div>
答:
添加到您的 flex 父级。align-items: stretch;
.flex-box {
width: 100%;
min-height: 345px;
height: 100%;
display: flex;
flex-direction: row;
align-items: stretch;
}
.tile {
display: flex;
flex-direction: column;
width: 348px;
padding-bottom: 0px;
margin-left: 1px;
margin-right: 61px;
height: 100%;
}
.richTextOne {
flex: 1 auto;
height: 100%;
padding-top: 35px;
padding-left: 24px;
padding-right: 11px;
}
<!-- Flex rules will automatically sync height of all div.tile boxes -->
<div class=“flex-box”>
<!--/* Tile 1 */-->
<div class=“tile”>
<div class="richTextOne">
<p>blah blah blah</p>
</div>
</div>
<!--/* Tile 2 */-->
<div class=“tile”>
<div class="richTextOne">
<p>blah</p>
</div>
</div>
<!--/* Tile 3 */-->
<div class=“tile”>
<div class="richTextOne">
<p>blah blah blah blah blah blah blah blah blah</p>
</div>
</div>
</div>
评论
.richTextOne
.richTextOne
IE11 中有很多与 flex 相关的错误。
查看 https://caniuse.com/?search=flex
特别是似乎与您的代码相关的内容:
在 IE10 和 IE11 中,如果容器具有 min-height 但没有显式 height 属性,则具有 display: flex 和 flex-direction: 列的容器将无法正确计算其弯曲子级的大小。
我的系统上没有 Internet Explorer 11,但我注意到您修复了磁贴等的宽度,因此如果调整页面大小,它会错位。
在下面测试我的代码,看看它是否适用于 ie11
<style>
*, *::after, *::before {
box-sizing: border-box;
}
.flex-box {
width: 100%;
min-height: 345px;
display: flex;
flex-direction: row;
}
.tile {
display: inline-block;
width: 33%;
padding-bottom: 0px;
margin-left: 1px;
margin-right: 61px;
background-color: #e2e2e2;
}
.tile:last-child {
margin-right: 0;
}
.richTextOne {
padding: 1rem;
display: block;
}
</style>
<!-- Flex rules will automatically sync height of all div.tile boxes -->
<div class="flex-box">
<!--/* Tile 1 */-->
<div class="tile">
<div class="richTextOne">
<p>blah blah blah</p>
</div>
</div>
<!--/* Tile 2 */-->
<div class="tile">
<div class="richTextOne">
<p>blah</p>
</div>
</div>
<!--/* Tile 3 */-->
<div class="tile">
<div class="richTextOne">
<p>blah blah blah blah blah blah blah blah blah</p>
</div>
</div>
如果您有任何问题,请随时提问。
你的意思是IE中的瓷砖不服从吗?除此之外,我在 IE 11 中没有发现其他问题。min-height: 345px
如果你指的是这个问题,你可以参考这个文档。解决方法是在以下周围添加一个 flex 列包装器:min-height
flex-box
.flex-box {
width: 100%;
min-height: 345px;
display: flex;
flex-direction: row;
}
.tile {
display: flex;
flex-direction: column;
width: 348px;
padding-bottom: 0px;
margin-left: 1px;
margin-right: 61px;
}
.richTextOne {
flex: 1 auto;
padding-top: 35px;
padding-left: 24px;
padding-right: 11px;
}
<div style="display: flex; flex-direction: column;">
<div class="flex-box">
<!--/* Tile 1 */-->
<div class="tile">
<div class="richTextOne">
<p>blah blah blah</p>
</div>
</div>
<!--/* Tile 2 */-->
<div class="tile">
<div class="richTextOne">
<p>blah</p>
</div>
</div>
<!--/* Tile 3 */-->
<div class="tile">
<div class="richTextOne">
<p>blah blah blah blah blah blah blah blah blah</p>
</div>
</div>
</div>
</div>
评论
在我的 div 上,我需要添加以使子 div 的高度相等。谢谢大家!flex-box
align-items: stretch;
评论