CSS3 flexbox的负面弯曲如何工作?

San*_*tta 6 css css3 flexbox

我最近开始玩CSS3 flex box,我已经阅读了很多资源并自己玩了.我查看过:http://www.w3.org/TR/css3-flexbox/

具体来说,我遇到了子元素的flex属性问题:

flex: <positive-flex> <negative-flex> <preferred-size>
Run Code Online (Sandbox Code Playgroud)

我似乎无法理解negative-flex参数是如何工作的.positive-flex是有意义的,因为它从父元素按比例分配空间到子元素.

根据我的理解,负弯曲应该是当它们溢出父元素时缩小元素.但是,我无法让这个工作.任何帮助理解将不胜感激!

这是我一直在测试的代码:http://jsfiddle.net/nxzQQ/2/

HTML:

<!DOCTYPE html>
<html>
<head>

</head>
<body>

<div id="container">
    <div></div>
    <div></div>
    <div></div>
</div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

CSS:

#container {
    width: 100%;
    height: 200px;

    display: -webkit-flex;
    display: flex;

    -webkit-flex-direction: row;
    flex-direction: row;
}

#container > :nth-child(1) {
    background-color: red;

    -webkit-flex: 1 0 0px;
    flex: 1 0 0px;
}

#container > :nth-child(2) {
    background-color: blue;

    -webkit-flex: 2 0 0px;
    flex: 2 0 0px;
}

#container > :nth-child(3) {
    background-color: orange;

    -webkit-flex: 1 0 0px;
    flex: 1 0 0px;
}
Run Code Online (Sandbox Code Playgroud)

cim*_*non 7

在一篇来自Opera on flexbox的文章中,负面flex就是这样描述的:

#first {
  flex: 1 1 400px;
}

#second {
  flex: 2 3 600px;
}

#third {
  flex: 1 2 400px;
}
Run Code Online (Sandbox Code Playgroud)

尽管名称为负的flex值,但它们是正值 - 上述声明中的第二个无单位值.这些仅在子项沿主轴方向溢出其父容器时才起作用.它们也作为比例值,但这次它们指定了"溢出量"(儿童溢出容器的数量)的比例,该比例将从每个孩子的大小中扣除,以使整体尺寸减小到等于父级的大小 - 实际上是为了阻止溢出.

假设父容器沿主轴是1100像素.在这种情况下,我们上面的孩子会将它溢出300像素(它们沿着主轴总共等于1400像素).由于设置了负的弹性值:

  • 第一个孩子将获得从其中移除的溢出量的1/6,即50像素.因此,其计算值为350像素.
  • 第二个孩子将从其中移除溢出量的3/6,即150像素.因此,其计算值为450像素.
  • 第三个孩子将获得从其中移除的溢出量的2/6,即100像素.因此,其计算值为300像素.

因此,较高的负弯曲值实际上会导致较小的元素!

资料来源:http: //dev.opera.com/articles/view/flexbox-basics/