【发布时间】:2021-10-05 11:21:56
【问题描述】:
我想用 HTML 和 CSS 创建一个简单的等距平铺地图。
图块宽 128 像素,高 64 像素,但其中一些(如下图)包含图形元素,总高度为 128 像素。
在这个简化的示例中,等距平铺地图只有 2x2 平铺,应如下所示:
如何使用 HTML 和 CSS 正确显示这些图块,以便它们具有正确的位置和比例?
请注意,2x2 tilemap 只是一个示例。如果地图是 5x5 瓦片或 25x75 瓦片,该解决方案需要同样有效(或差不多)。无论瓷砖顺序如何,它也需要工作。
到目前为止,我的想法是旋转容器以使其等距,然后以相反方向旋转图块以“补偿”容器的旋转(我更喜欢以它们的方式显示图块绘制)。但我不确定这是正确的方法。位置不正确,图像失真。
你能告诉我我做错了什么吗?
.container {
width: 256px;
height: 256px;
transform: rotateX(60deg) rotateZ(45deg);
display: flex;
flex-wrap: wrap;
background-color: blue;
}
.tile {
width: 128px;
transform: rotateX(0deg) rotateZ(-45deg);
}
.grass {
height: 64px;
background-image: url("https://i.stack.imgur.com/39MxJ.png");
}
.bush {
height: 128px;
background-image: url("https://i.stack.imgur.com/GpNEI.png");
}
<div class="container">
<div class="tile grass"></div>
<div class="tile grass"></div>
<div class="tile bush"></div>
<div class="tile bush"></div>
</div>
【问题讨论】:
-
您的定位似乎是相对于
128pxheight,但因为瓷砖只是64px,这可能有助于改善定位 -
@Rana 我不确定你从哪里得到这张图片,但我只是更改了 sn-p 以使用帖子本身中提到的图片,并且与发布的结果相符。
-
为什么选择 Canvas 方式?旁边你可以走 tmx 方式stackoverflow.com/questions/21349883/…
-
@HereticMonkey 你是如何获得图像的,因为我无法在下面的答案中做到这一点
-
我刚刚edit提出了这个问题,并从问题底部的参考资料中复制了URL(在
[1]:和[2]:旁边)。