html - Flexbox 没有按预期包装元素

标签 html css flexbox

我需要创建一个下拉导航菜单,当它很长时可以换行。

通过在菜单上设置以下 CSS 属性,我可以获得预期的结果。

.dynamic {
  position: absolute;
  max-height: 80px;
  display: flex;
  flex-direction: column;
  flex-wrap: wrap;
}

但是,这在 Internet Explorer 11 上不起作用。这些元素不会像在 Chrome 上那样换行到下一行。

这是一个jsFiddle

如果我使用 height: 80px 而不是 max-height: 80px; 会起作用,但这对我不起作用,因为我希望菜单随着元素。

有谁知道如何让 IE 正确包装元素?

最佳答案

由于不完全支持 CSS Flexbox 在元素超过最大高度时提供包装菜单,因此我使用 height 属性创建了一个解决方法。

作为@Michael_B pointed out ,容器不会包裹包裹的元素。

一个解决方案是将背景样式应用于 flex 元素而不是容器 like this

这允许容器“看起来”与元素一起增长。然后使用 nth-child 伪类,我可以让最后一项跨越容器的整个高度。

.dynamic > li:nth-child(4n),
.dynamic > li:last-child:nth-child(n+4) {
    flex: 1 0 auto;
}

关于html - Flexbox 没有按预期包装元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36862390/

相关文章:

html - 为什么均匀分布菜单的 "text-justify: align"方法不起作用?

html - 如何使用 CSS 更改元素的文本颜色?

javascript - PHP页面不更新MySQL数据

css - 使用 React 加载字体图标

html - 将一项 flex 元素从 flex 容器中移出

html - block 容器框中的内联和 block 级框

javascript - UX : dev plan + jQuery/Framework? 原型(prototype)制作

jquery - 全 Angular 问题

html - 浏览器窗口缩小时页脚与内容重叠

html - flex 元素不会溢出