javascript - 如何创建一个 img 并将其位置设置为光标位置

标签 javascript jquery css

我正在尝试做一些网页构造器,但遇到了一个问题——我有一个区域,你可以从你的电脑上拖放图像并将其放置在页面上。

然而,当创建 img 时,它放置在顶部 0 和左侧 0(当然应该如此)。问题是:

我应该如何修改我的代码以创建一个 img 并将其 lefttop 设置为与您将 img 拖放到区域时的光标位置相同.

这是我的代码:

function readURL(input) {
    if (input.files && input.files[0]) {
        var reader = new FileReader();
        reader.onload = function (e) {
            var img = $('<img class="draggable">')
            img.attr('src', reader.result);
            img.appendTo(document.body);
            var $draggable = $('.draggable').draggabilly({
                containment: '#none'
            })
        };
        reader.readAsDataURL(input.files[0]);
    }
}

注意 .draggable类已经有position: absolute;

最佳答案

使用 mousemove 事件跟踪鼠标在“舞台”div 中的位置,并按照以下代码放置图像:

var divPos = {};
var offset = $("#stage").offset();
$(document).mousemove(function(e){
    divPos = {
        left: e.pageX - offset.left,
        top: e.pageY - offset.top
    };
});

$("#stage").click(function(){
   var i_width = 20
   var i_height = 20
   
   var img = $("<img width="+i_width+" height="+i_height+" src='https://d30y9cdsu7xlg0.cloudfront.net/png/96746-200.png'/>")
   
   img.css("position","absolute");
   img.css("left",(divPos.left-(i_width/2))+"px");
   img.css("top",(divPos.top-(i_height/2))+"px");
   $("#stage").append(img)
})
#wrapper{
  padding: 20px;
  
}

#stage {
  background: gray;
  margin: 30px;
  width: 300px;
  height: 200px;
  position:relative;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="wrapper">
<h1>Click inside gray area to place image</h1>
<div id="stage"></div>

关于javascript - 如何创建一个 img 并将其位置设置为光标位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47902619/

相关文章:

javascript - 使用 momentjs 在最终用户的时区进行操作

javascript - 添加动态二类Jquery

javascript - 如果滚动超过 300vh

javascript - Jquery .click 函数不适用于 div 标签

javascript - 使用 jQuery 计算各节中单选按钮的总和

html - 如何消除页面底部的多余空间(WP主题)

javascript - 是否可以在替换方法中传递变量而不是常量

jquery - 使用 JQuery 定位 css 类的单个实例

html - ie6边距扩大20px

css - 导入外部 css 时(在 vue.js 组件中),webpack 2 退出并显示代码 3221226505