如何将元素移动到鼠标位置

How to move an element to the mouse position

本文关键字:鼠标 位置 移动 元素      更新时间:2023-09-26

当用户单击文档时,我正在尝试移动元素,但是,该元素正在移动到偏移位置。 单击时如何删除偏移量? 我正在尝试让元素移动到鼠标的确切位置,我该怎么做? 我需要使用.offset()功能吗? 如果是这样,我将如何做?

.HTML

Player Name:  <input type="text" name="name" id="name" /><br>
<button name="submt" id="meh">Submit</button>

.JS

$(document).ready(function(){
    $(this).on("click", function(e){
        var x = e.pageX;
        var y = e.pageY;
        $("#meh").css("marginLeft", x);
        $("#meh").css("marginTop", y);
    })
})
<div class="soccer-field">
<div class="ball"></div>
</div>

var container = document.querySelector(".soccer-field");
container.addEventListener('click', function (event) {
  var x = event.clientX;
  var y = event.clientY;
  var ball = document.querySelector(".ball");
  ball.style.position = "absolute";
  ball.style.left = `${x}px`;
  ball.style.top = `${y}px`;
})

绝对设置它的位置并使用左偏移量和顶部偏移量而不是边距控制它可能要容易得多:

$(document).ready(function() {
  $(this).on("click", function(e) {
    var x = e.pageX;
    var y = e.pageY;
    var el = $("#meh");
    el.css('position', 'absolute');
    el.css("left", x);
    el.css("top", y);
  })
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
Player Name:
<input type="text" name="name" id="name" />
<br>
<button name="submt" id="meh">Submit</button>

否则,您需要根据前面的元素计算偏移量(因为每次单击后按钮的偏移量都会更改)。

改用左和上,还要确保使用绝对或相对定位:

$(document).ready(function(){
    $(this).on("click", function(e){
        var x = e.pageX;
        var y = e.pageY;
        $("#meh").css("left", x);
        $("#meh").css("top", y);
    })
})