我正在尝试为一个矩形列表创建一些CSS,包装,这是响应.矩形可以包含可变量的文本.矩形应该具有300px的最小宽度,但如果有更多可用空间,则可以增长.不管矩形的数量如何,它都应该工作.
这是一个我想要的样子,在一个宽大的桌面屏幕上,一个普通的桌面屏幕和一个手机,大概是:
(我意识到大多数手机和桌面比像素更宽,但是这些数字在使用SO的代码片段时更容易使用.)
我正在尝试三种技术,他们都没有做我想要的:
FlexBox不工作:
FlexBox似乎是理想的工作. flexBox实现的麻烦在于,我找不到一种方法来确保最后一个矩形与其余矩形保持相同的大小,同时也允许矩形在非常宽的屏幕中增长.这是我可以想出的最好的flexBox结果的图像,最后一行有问题:
.container { display: flex; flex-wrap: wrap; } .rect { flex: 1 0 300px; height: 150px; }
<div class="container"> <div class="rect" style="background-color: #2F80ED"></div> <div class="rect" style="background-color: #2D9CDB"></div> <div class="rect" style="background-color: #56CCF2"></div> <div class="rect" style="background-color: #A6E2F5"></div> <div class="rect" style="background-color: #D6EBF2"></div> </div>
2. float:left技术不行:
另一个反应灵敏的技术是使用浮点数,但是我找不到一种保持矩形相同宽度(具有不同文本内容)的方式,同时也允许它们在最宽的屏幕中增长.以下是我最终结论的形象:
这里是float的代码:left implementation:
.container:after { content: ""; clear: both; } .rect { float: left; min-width: 300px; height: 150px; overflow-y: hidden; }
<div class="container"> <div class="rect" style="background-color: #2F80ED">Lorem ipsum dolor sit amet,consectetur adipiscing elit,sed do eiusmod</div> <div class="rect" style="background-color: #2D9CDB"></div> <div class="rect" style="background-color: #56CCF2">Lorem ipsum dolor sit amet,consectetur</div> <div class="rect" style="background-color: #A6E2F5">Lorem ipsum dolor sit amet,sed</div> <div class="rect" style="background-color: #D6EBF2"></div> </div>
为什么不媒体查询?
解决方法
您可以通过没有高度的伪持续使用带有额外元素的flex:
.container { display: flex; flex-wrap: wrap; background:gray;/*see me */ } .container:after { content:''; flex: 1 0 300px; margin-bottom:auto; } .rect { flex: 1 0 300px; height: 150px; }
<div class="container"> <div class="rect" style="background-color: #2F80ED"></div> <div class="rect" style="background-color: #2D9CDB"></div> <div class="rect" style="background-color: #56CCF2"></div> <div class="rect" style="background-color: #A6E2F5"></div> <div class="rect" style="background-color: #D6EBF2"></div> </div>
:注意五点好,六个盒子的行为是不同的.