相关疑难解决方法(0)

当flexbox项目以列模式换行时,容器不会增加其宽度

我正在研究嵌套的flexbox布局,它应该如下工作:

最外层(ul#main)是一个水平列表,当添加更多项时,它必须向右扩展.如果它变得太大,应该有一个水平滚动条.

#main {
    display: flex;
    flex-direction: row;
    flex-wrap: nowrap;
    overflow-x: auto;
    /* ...and more... */
}
Run Code Online (Sandbox Code Playgroud)

此list(ul#main > li)的每个项目都有一个header(ul#main > li > h2)和一个内部列表(ul#main > li > ul.tasks).此内部列表是垂直的,应在需要时包装到列中.当包装到更多列时,其宽度应该增加,以便为更多项目腾出空间.此宽度增加也应适用于外部列表的包含项.

.tasks {
    flex-direction: column;
    flex-wrap: wrap;
    /* ...and more... */
}
Run Code Online (Sandbox Code Playgroud)

我的问题是当窗口的高度太小时内部列表不会换行.我已经尝试了很多篡改所有的flex属性,试图仔细遵循CSS-Tricks的指导,但没有运气.

这个JSFiddle显示了我到目前为止所拥有的内容.

预期结果 (我想要的):

我想要的输出

实际结果 (我得到的):

我目前的输出

较旧的结果 (我在2015年得到的):

我的旧输出

UPDATE

经过一番调查,这开始看起来像一个更大的问题.所有主流浏览器的行为方式都相同,而且与我的嵌套Flexbox设计无关.更简单的flexbox列布局拒绝在项目换行时增加列表的宽度.

其他的jsfiddle清楚地表明了问题.在当前版本的Chrome,Firefox和IE11中,所有项目都正确包装; 列表的高度在row模式中增加,但其宽度在column模式下不会增加.此外,在更改column模式的高度时,根本没有立即回流元素,但存在row模式.

然而,官方规范 …

html css css3 flexbox

143
推荐指数
4
解决办法
4万
查看次数

Flex盒容器宽度不会增长

在默认行方向上使用弹性框时,容器高度会增加以包含所有弹性项,即使它是绝对定位的.

#container {
  position: absolute;
  display: flex;
  flex-wrap: wrap;
}

#container > div {
  flex: 0 0 200px;
  height: 200px;
}
Run Code Online (Sandbox Code Playgroud)

请参阅http://codepen.io/tamlyn/pen/dPjLoN/?editors=110

但是,如果将flex方向更改为column,则容器将折叠到单个flex项的宽度,即使这些项包装到下一列也是如此.

#container {
  position: absolute;
  display: flex;
  flex-direction: column;
  flex-wrap: wrap;
}

#container > div {
  flex: 0 0 200px;
  width: 200px;
}
Run Code Online (Sandbox Code Playgroud)

http://codepen.io/tamlyn/pen/rarbeN?editors=110

如何使容器包含column模式中的所有弹性项目?

css css3 flexbox

15
推荐指数
1
解决办法
1万
查看次数

使带有收缩配合柱的柔性容器

假设我们有一个容器,其子容器必须用列填充它.容器的高度有限,并且必须与所有后代适合的宽/窄一样宽.它应该如下所示:

在此输入图像描述

为了做到这一点,我试试flexbox.问题是:它是否有可能缩小适合?

  • float:left:在Chrome中根本没有做到这一点,在Firefox中,容器的宽度只有一列 - 例如1
  • position:absolute:它对正常流量没有贡献,所以放弃它.

目前我将浏览器范围缩小到Chrome和FF.

HTML:

<div class="flexcontainer wrap column">
    <div></div>
    <div></div>
    ...
</div>
Run Code Online (Sandbox Code Playgroud)

CSS:

.flexcontainer{
    display: flex;              /* make it a flexbox */
    flex-flow: column wrap;     /* make it a column container, and fill them one after another */

    align-content: stretch;
    align-items: center;
    justify-content: center;

    float: left;                /* shrink-to-fit */

    max-height: 450px;          /* limit the height */
    min-height: 300px;
}
.flexcontainer > div {
    height: 100px;            
    margin: 3px;
    width: 100px;               /* set the …
Run Code Online (Sandbox Code Playgroud)

css shrink flexbox

10
推荐指数
1
解决办法
4677
查看次数

标签 统计

css ×3

flexbox ×3

css3 ×2

html ×1

shrink ×1