【发布时间】:2019-10-22 08:57:19
【问题描述】:
所以我喜欢这个,它可以包裹,但盒子两边都对齐并填满了整个空间。
<head>
<style>
* {
padding: 0px;
margin: 0px;
text-transform: none;
font-style: normal;
}
p {
display: flex;
flex-wrap: wrap;
width: 200px;
}
i {
flex: 1;
padding: 5px;
margin: 2px;
background: #ddd;
text-align: center;
}
</style>
</head>
<body>
<p>
<i>foo</i><i>hello</i><i>congratulations</i><i>forward</i><i>interesting</i><i>place</i><i>walk</i><i>to</i><i>anyplace</i><i>next</i><i>sophisticationism</i>
</p>
</body>
混合使用大小词,它以某种方式找出如何以最佳方式布置它们,从而完全填满空间。
我现在想做的是,不是让每个框都是动态宽度的矩形,而是让框“对齐网格”可以这么说。也就是说,想象一下每一行都有一个正方形网格。有点像这样(我已经完全硬编码,只是为了展示它的外观。实际上这就是我的问题,如何使用 FlexBox 使其自动化)。
<head>
<style>
* {
padding: 0px;
margin: 0px;
text-transform: none;
font-style: normal;
}
p {
display: flex;
flex-wrap: wrap;
width: 220px;
}
i {
width: 50px;
height: 50px;
padding: 5px;
margin: 2px;
background: #ddd;
text-align: center;
}
.l {
width: 114px;
}
</style>
</head>
<body>
<p>
<i>a</i><i>a</i><i>a</i><i>a</i><i class='l'>long</i><i>a</i><i class='l'>long</i><i>a</i><i class='l'>a</i><i class='l'>long</i><i>a</i><i>a</i><i>a</i><i>a</i><i>a</i><i>a</i><i>a</i>
</p>
</body>
所以换个说法,我的问题是如何使 流动 文本(如上图中的单词)布局,以便 (a) 它填充每一行,并且 (b) 每个框都是倍数的一个正方形。也就是说,它捕捉到一个正方形的网格,天气它是 1、2、3+ 个正方形,而不是 2.5 个正方形或 1.2345 个正方形或其他东西。它总是捕捉到整个块。它首先查看 longer 词,然后计算它将占用多少块。然后它会拉伸任何较短的块(如上例中的一个字母“a”)以填充空白。
想知道如何使用 FlexBox 或 CSS 来实现。
【问题讨论】:
-
无法使用 CSS flexbox 或 css-grid。
-
我更新答案
标签: javascript html css flexbox