【发布时间】:2013-07-11 21:00:56
【问题描述】:
我正在用 div 制作图块
我做了什么:
<html>
<style>
.tile{
display:inline-block;
width: 30em;
height: 30em;
background-color: #000;
}
</style>
<div class = tile>
</div>
<div class = tile>
</div>
<div class = tile>
</div>
<div class = tile>
</div>
<div class = tile>
</div>
</html>
这会在最右边的图块边缘之后产生未使用的空间(因为框跳到下一行)。
我想做的事:
- 平铺大小应取决于字体大小(检查)
- 每行的图块数量应取决于窗口大小(检查)
- 瓷砖应该从边到边完美地填满窗户(要做)
我想过这样的事情(伪代码):
width: calc(100% / rounded(100% /30em) );
示例:如果窗口宽度除以所需的框宽度得到 2,7:那么我希望框宽度为 100%/3。
如何使用 JavaScript 计算并设置宽度? (我之前没用过JS)。
【问题讨论】:
-
你能给我们一个工作的例子来说明它是如何不工作的吗?
-
内联块对源代码中的空白很敏感。你试过漂浮瓷砖吗?
-
没有。我认为这是不可能的,除了如果你使用 flexbox,我还不明白,也没有很好地实现。您的大小要么相对于字体大小 (em),要么相对于窗口大小 (%)。但是,通过 JS,您可以管理一些事情。例如,如果字体大小介于 X 和 Y 之间,则图块为 X %。否则为 Y %。或者你可以制作一个复杂的数学公式。
-
奇怪,您可以在
calc中减去em值,但除以em值似乎不起作用... -
实际上,这似乎是规范... dev.w3.org/csswg/css-values/#calc-type-checking 您只能除以数字(没有单位,这使它们成为 length 代替)。
标签: javascript css tiles