好的...需要进行一些微调,可能涉及到更多的包装器,但我认为我已经接近了。
基本原则
我们需要行,每行都包含三列。每个列div都拥有一个“content” div,其中包含实际内容(因此具有背景颜色)。
使用flexbox
,我们可以告诉中间列(以及它的内容div)要固定宽度,而每个侧面div则是灵活的。
侧面列内部的内容div是自动宽度的,并且使用flex-end/start
等进行对齐。
当媒体查询启动时,行变成列,之前的“column” div在该列中变成行。
.row {
display: flex;
margin-bottom: .5em;
}
.content {
text-align: center;
color: white;
display: flex;
justify-content: center;
align-items: center;
padding: 1em;
}
.col {
flex: 1;
display: flex;
}
.center {
flex: 0 0 350px;
display: flex;
margin: 0 .5em;
}
.center .content {
background: pink;
flex: 1 1 100%;
}
.left {
justify-content: flex-end;
}
.left .content {
flex: 0 1 auto;
background: blue;
}
.right .content {
flex: 0 1 auto;
background: green;
}
@media screen and (max-width:700px) {
.row {
flex-direction: column;
}
.col {
flex: 1;
justify-content: flex-end;
}
.center {
margin: 0;
}
}
<div class="container">
<div class="row">
<div class="col left">
<div class="content">Lorem ipsum dolor sit amet.</div>
</div>
<div class="col center">
<div class="content">Lorem </div>
</div>
<div class="col right">
<div class="content">Lorem ipsum.</div>
</div>
</div>
<div class="row">
<div class="col left">
<div class="content">Lorem ipsum dolor sit. Lorem ipsum.</div>
</div>
<div class="col center">
<div class="content">Lorem ipsum dolor.</div>
</div>
<div class="col right">
<div class="content">Lorem</div>
</div>
</div>
</div>
根据您需要的断点和“移动”尺寸设计的具体外观,仍需进行一些工作...但我认为我已经有了一个相当不错的开始。