gpt4 book ai didi

javascript - 将 dom 中的 child 附加到另一个 div 中,但要保持在同一位置

转载 作者:行者123 更新时间:2023-11-27 22:59:07 24 4
gpt4 key购买 nike

单击黄色 div 时我有 2 个元素我想将红色方 block 放在那个黄色 div 中,但要保持在相同位置(单击黄色元素时红色不能改变位置)原来是。这只是我做的事情的一个例子,两个元素都是 position: absolute,所以它应该保持这样。有没有办法做到这一点? http://jsfiddle.net/9t6n8dmk/25/

编辑:我说过我需要两个元素都是绝对的。

<div class="square" id="square">
</div>

<span class="image" id="image">
</span>

.square{
position:absolute;
height:50px;
width:50px;
left:100px;
top:100px;
background:yellow;
}
.image{
position:absolute;
height:50px;
width:50px;
left:100px;
top:10px;
background: red;
}

let square = document.getElementById("square");
let image = document.getElementById("image");

square.addEventListener("mousedown", function(){
square.appendChild(image);
})

最佳答案

当你将一个元素移动到另一个父元素时,你必须重新计算元素相对于新父元素的位置:

let square = document.getElementById("square");
let image = document.getElementById("image");

square.addEventListener("mousedown", function() {
if (image.parentElement !== square) {
image.style.top = (image.offsetTop - square.offsetTop) + 'px';
image.style.left = (image.offsetLeft - square.offsetLeft) + 'px';
square.appendChild(image);
}
})
.square {
position: absolute;
height: 50px;
width: 50px;
left: 100px;
top: 100px;
background: yellow;
}

.image {
position: absolute;
height: 50px;
width: 50px;
left: 100px;
top: 10px;
background: red;
}
<div class="square" id="square">
</div>

<span class="image" id="image">
</span>

关于javascript - 将 dom 中的 child 附加到另一个 div 中,但要保持在同一位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53525738/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com