【发布时间】:2020-06-28 09:22:59
【问题描述】:
我正在用 javascript 创建一个图像拼图。我在 2 行中创建 14 个 div 元素,然后向它们添加背景图像,设置它们的位置和宽度等......它工作正常。但是当我重新定位它们(随机播放)时,会出现不需要的空白。并非总是如此,不是每个图像,也不是同一个地方。 我同时只更改两个元素。
这是我的更改功能:
let original_pos = [];
// I choose two element randomly, and pushing the first element positions into the original_pos array
// and I pass the second element to the shuffle_elem() function
function shuffle() {
let random_elem = document.querySelectorAll(".bg-elem");
for(let i = 0; i <= 50; i++) {
let random_num = Math.floor(Math.random() * random_elem.length);
let random_num2 = Math.floor(Math.random() * random_elem.length);
original_pos.push(random_elem[random_num].offsetTop);
original_pos.push(random_elem[random_num].offsetLeft);
cserel_elem(random_elem[random_num],random_elem[random_num2]);
}
// Here are the positions change
function shuffle_elem(elem1, elem2) {
elem1.style.left = elem2.offsetLeft+'px';
elem1.style.top = elem2.offsetTop+'px';
elem2.style.top = original_pos[0]+'px';
elem2.style.left = original_pos[1]+'px';
original_pos = [];
}
一切正常,所以我可以更改这两个元素,但会有一点空白。在这张图片中,您可以在两个相邻的元素中看到它,但有时根本没有空白,或者只有一个元素有或几乎每个元素......完全随机。
只有 1 个像素,但它在那里,非常令人沮丧。请帮我找出这个像素隐藏在哪里。 请不要使用 jQuery
一些附加信息(CSS):
// the main holder div where my elements are
.PlayGround {
position: relative;
overflow: hidden;
}
// one element
.bg-elem {
position: absolute;
margin: 0;
padding: 0;
}
【问题讨论】:
-
顺便问一句,你为什么不使用 CSS 网格并简单地交换位置?
-
@BálintGácsfalvy 所有图片的尺寸都完全相同吗?
-
@connexo 我让它们在这些之后可拖动。如果他们在网格中,这不会影响他们吗?
-
@NiklasE。是的,他们是。我刚刚仔细检查了它。
标签: javascript html css