【发布时间】:2018-09-12 21:42:52
【问题描述】:
这是我正在使用的一些标记和 css 的示例:
.left {
max-width: calc(100% - 150px);
float: left;
margin-right: 10px;
}
img {
width: 400px;
max-width: 100%;
}
.right {
background: #eee;
padding: 10px;
margin: 10px 0;
overflow: auto;
border: 1px solid #999;
}
@media (max-width: 400px) {
.wrapper {
display: flex;
flex-direction: column;
}
.right.top {
order: 1;
}
.right.bottom {
order: 3;
}
.left {
order: 2;
}
}
<div class="wrapper">
<div class="left"><img src="https://i.stack.imgur.com/W6Sd8.png" /></div>
<div class="right top">Hello, I am Kitteh</div>
<div class="right top">Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</div>
<div class="right bottom">Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi</div>
<div class="right bottom">Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? </div>
</div>
基本思想是图像可以最大为 400 像素,但必须始终为右侧的文本内容留出至少 150 像素。文本内容将填满尽可能多的空间——图像始终至少留有 150 像素。如果你调整上面的 sn-p 的大小,你可以看到图像的大小是响应式的。
问题:我希望所有.right div 都留在列中,并且一旦它们的高度超过.left div 的高度就不要换行。
注意事项:
- 包装
.rightdiv 不是一个选项,因为在此应用程序中,它们使用flexorder属性以不同的宽度重新排列。我在这里包含了一个媒体查询来演示。 - 我考虑过使用 javascript 将
.leftdiv 的高度设置为等于.rightdiv 的总和,但我真的很讨厌使用 javascript 进行布局,我想避免这种情况 - 特别是因为它会如果内容应该改变或浏览器被调整大小,需要重新计算高度。 - 我尝试使用 here 讨论的 css 网格,但它最终成为一个问题,因为这会强制第一个
.rightdiv 与其网格行的高度相同,这不是我想要的。 - 在
.rightdiv 上设置左边距也是有问题的,因为图像大小是响应式的,而且我设置的任何边距最终都会在某些屏幕宽度下出错。
【问题讨论】:
-
请解释第一个警告,或者更好地扩展您的代码以包含重新排序代码。
-
会的 - 给我一点时间
-
@Jasonbamber - 已更新。您可以在较小的设备宽度上看到元素使用 css flex 和
order切换位置 -
右边的元素是固定数吗?
-
@TemaniAfif - 不,它可能会有所不同。但是,如果有帮助的话,我可以很容易地计算它们并编写一些动态内联 css。