【发布时间】:2020-01-10 12:28:52
【问题描述】:
我有一个充满矩形的网格状结构,目前使用 inline-flex 创建这个网格。
矩形几乎是正方形。
在每个矩形内,我都有一个包含图像作为背景的子 div,并完全填充父 div。
现在!
当使用 javascript 将带有图像背景的内部 div 旋转到 90 度或 270 度时,当内部 div 旋转时,它会在内部 div 和父 div 之间的边缘留下间隙。
我尝试过使用 display = inline-block, block, grid (all), table(all) 和我能想到的所有其他东西。
我什至有一个可能的解决方案,但我不确定它是最好的和 100% 完整的证明。
如果块在旋转前宽度为178px,高度为160px,旋转后我切换高度和宽度,宽度变为160px,高度变为178px。
现在!!我注意到我取 160px 的最低宽度并减去 178px 的较大宽度,然后将其除以 2 我得到 -9px。 如果我将位置设为绝对,左-9px,则该块完全适合左。 我使用 Math,abs(-9) 的高度作为顶部位置,并且块现在完美贴合。
我对这个解决方案感到不舒服。
如何旋转我的潜水以完美契合。
.flexParent {
display: block;
position: absolute;
width: auto;
height: auto;
}
.parentBlock {
display: inline-flex;
width: 178px;
height: 160px;
align-items: center;
justify-content: center;
position: relative;
}
.parentBlock>.imageBlock {
position: absolute;
left: 0px;
top: 0px;
bottom: 0px;
right: 0px;
margin: auto;
/*background: url('url/to/image.png');*/
background: url('https://via.placeholder.com/150');
width: 178px;
height: 160px;
}
.parentBlock>.imageBlock.rotated {
transform-origin: center center;
transform: rotate(270deg);
background-color: #ff0033;
height: 178px;
width: 160px;
left: -9px;
top: 9px;
}
<div class="flexParent">
<div class="parentBlock">
<div class="imageBlock"></div>
</div>
<div class="parentBlock">
<div class="imageBlock"></div>
</div>
<div class="parentBlock">
<div class="imageBlock"></div>
</div>
<div class="parentBlock">
<div class="imageBlock"></div>
</div>
<div class="parentBlock">
<div class="imageBlock rotated"></div>
</div>
<div class="parentBlock">
<div class="imageBlock"></div>
</div>
<div class="parentBlock">
<div class="imageBlock"></div>
</div>
<div class="parentBlock">
<div class="imageBlock"></div>
</div>
<div class="parentBlock">
<div class="imageBlock"></div>
</div>
<div class="parentBlock">
<div class="imageBlock"></div>
</div </div>
【问题讨论】:
-
让你所有的元素都完美的正方形并且它是固定的
标签: javascript jquery html css rotatetransform