文本放大了flexbox容器

时间:2015-11-27 23:14:25

标签: css css3 flexbox longtext

我不知道如何处理文本而不扩大Flex容器。

如果我在@media@media screen and (min-width:600px)时填充了一个带有文字的框,则此框大于50%。我希望保持相同的百分比,当盒子是空的时候。

这是codepen:http://codepen.io/elcollage_com/pen/LpoGVN?editors=110

感谢。

示例:

html, body{
  height: 100%;
  padding: 0;
  margin: 0;
}

.container {
    display:flex;
    flex-wrap:wrap;
    flex-direction:row;
    justify-content:flex-start;
    align-items:stretch;
    height: 100%;
}

.left {order:2; background:red; flex-basis:100%;}
.middle {order:1; background: green; flex-basis:100%;}
.right {order:3; background:yellow; flex-basis:100%;}


@media screen and (min-width:600px) {
   .container {
       flex-flow: column wrap;
   } 

    .left {
      flex: 1 0 50%;
      order: 1;
          
    }
    .middle {
      flex: 1 0 50%;
      order: 3;
        
    }
    .right {
      flex: 1 0 50%;
      order: 2;
        
    }
}


@media screen and (min-width:900px) {
   .container {
       flex-flow: row nowrap;
   } 

    .left {
        flex:1 0 37%;
        order:1;
    }
    .middle {
        flex:1 0 21%;
        order:2;
    }
    .right {
        flex:1 0 37%;
        order:3;
    }
}
<div class="container">
    <div class="left"></div>
    <div class="middle"></div>
    <div class="right"></div>
</div>

1 个答案:

答案 0 :(得分:1)

  

如果我在@media@media screen and (min-width:600px)时填充了一个带有文字的框,则此框大于50%。我希望保持相同的百分比,当盒子是空的时候。

您已将flex: 1 0 50%应用于媒体查询中的每个弹性项目。但是,Flex媒体查询中的Flex容器已更改为 column-direction 。因此,flex-basis属性中的50%flex是指height而不是width。当您为每个框添加文本时,高度保持在50%,但宽度会增加。

您的代码:

@media screen and (min-width:600px) {
   .container {
       flex-flow: column wrap; /* flex container changed to column direction */
   } 

    .left {
      flex: 1 0 50%; /* 50% refers to height not width */
      order: 1;

    }
    .middle {
      flex: 1 0 50%;
      order: 3;

    }
    .right {
      flex: 1 0 50%;
      order: 2;    
    }
}

因此,如果您希望每个框的宽度为50%(带或不带文本),则需要对代码进行一些调整。

修订代码:

.container {
    display:flex;
    flex-wrap:wrap;
    flex-direction:row;
    justify-content:flex-start;
    align-items:stretch;
    height: 100%;
    width: 100%; /* new */
}

@media screen and (min-width:600px) {
   .container {
       flex-flow: column wrap;
   } 

    .left {
      flex: 1 0 50%;
      order: 1;
      width: 50%; /* new */

    }
    .middle {
      flex: 1 0 50%;
      order: 3;
      width: 50%; /* new */

    }
    .right {
      flex: 1 0 50%;
      order: 2;    
      width: 50%; /* new */
    }
}

DEMO

如果您的文字垂直溢出,则可以使用overflowbox-sizing等属性管理超出部分。