Flexbox列重叠

mar*_*ian 13 flexbox

我试图使用flexbox模仿WinJS分组列表视图.我正在接近(我认为),除了在调整大小时列重叠.

http://jsfiddle.net/w8ts4Lnx/5/

我希望项目留在组内,让组水平增长.

body {
    height: 100%;
    display: flex;
    flex-flow: column wrap;
}

h1 {
   padding: 1em;
}

#content {
    padding: 10px;
    background-color: #eee;
    display: flex;
    flex-flow: row nowrap;
    flex-grow: 1;
}

#content > .group {
    margin: 10px;
    padding: 10px;
    border: 1px solid #cfcfcf;
    background-color: #ddd;
    display: flex;
    flex-flow: column wrap; 
    max-height: 600px;    
}

#content > .group .item {
    margin: 10px;
    padding: 10px;
    background-color: #aaa;
    width: 200px;
}
Run Code Online (Sandbox Code Playgroud)

我缺少什么想法?

小智 35

如果您不希望内容溢出容器,则必须指定 flex-shrink: 0;

柔性收缩

此"数字"组件设置伸缩缩放并指定弹性收缩因子,该因子确定当分配负自由空间时,弹性项目相对于弹性容器中其余弹性项目的收缩程度.省略时,将其设置为1.当分配负空间时,弹性收缩因子乘以弹性基础.

我不确定你试图模仿的winJS行为,因为我从未使用过winJS,但我认为这更接近你想要实现的正确行为:http://jsfiddle.net/w8ts4Lnx/11/


woj*_*jas 4

由于内容不适合,列重叠。这些项目不适合该组,因此它们会溢出。为了解决这个问题,你必须为 group-div 指定一个溢出策略,使用“溢出”,如下所示(最后一个):

#content > .group {
    margin: 10px;
    padding: 10px;
    border: 1px solid #cfcfcf;
    background-color: #ddd;

    display: flex;
    flex-flow: column wrap; 
    max-height: 600px; 

    overflow: hidden;
}
Run Code Online (Sandbox Code Playgroud)

默认设置是visible让它们落在外面。在这里阅读更多信息:http ://www.w3schools.com/cssref/pr_pos_overflow.asp

除了 之外还有其他选择hidden。您可以设置垂直/水平滚动,或两者都设置。只需选择让您更接近所需的“WinJS 分组列表视图”的选项即可。尝试:

overflow-x: scroll;
overflow-y: auto;
Run Code Online (Sandbox Code Playgroud)

或者

overflow-y: auto;
overflow-x: scroll;
Run Code Online (Sandbox Code Playgroud)

快乐编码!