我不知道如何处理文本而不扩大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>
答案 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 */
}
}
如果您的文字垂直溢出,则可以使用overflow
和box-sizing
等属性管理超出部分。