使用javascript / jquery在图像的左上角定位div

时间:2013-08-17 06:41:34

标签: javascript jquery

我正在创建一个富文本编辑器,我正在尝试在javascript动态插入的图像的左上角放置一个删除按钮div。因此,我必须在运行时确定div的位置。但是,我无法让它完全位于左上角。这是我的代码:

function showDeleteButton(image) {
    var rect = image.getBoundingClientRect();
    var top = rect.top + $(document).scrollTop();
    var left = rect.left + $(document).scrollLeft();
    var deleteButton = $(".delete_button")[0];
    deleteButton.style.visibility = 'visible';
    deleteButton.style.top = top + "px";
    deleteButton.style.left = left + "px";
}

非常感谢任何帮助!

2 个答案:

答案 0 :(得分:1)

html

<div>
    <div id="delete_button"></div>
    <img src"foo.png" />
</div>

和css

#delete_button{
    position:absolute;
    top:0;
    left:0
    z-index:1;
}

答案 1 :(得分:1)

您可以将删除按钮设置为body元素的直接子项。然后,您可以测量悬停图像的偏移量,并将按钮重新定位到其左上角。

CSS

.delete_button {
    position:absolute;
    display:none;
}

的jQuery

$(function() {
    var deleteButton = $(".delete_button");
    var hovered_image = false;
    $('img').mouseenter(function(e) {
        hovered_image = this;
        deleteButton.show();
        var img = $(this);
        var offset = img.offset();
        deleteButton.css({
            top: offset.top + 'px',
            left: offset.left + 'px'
        });
    }).mouseleave(function(e) {
        if (e.relatedTarget === deleteButton[0]) {
            return;
        }
        deleteButton.hide();
        hovered_image = false;
    });
    deleteButton.mouseleave(function(e){
        if (e.relatedTarget === hovered_image) {
            return;
        }
        deleteButton.hide();
        hovered_image = false;
    });
    deleteButton.click(function(e){
        hovered_image.parentNode.removeChild(hovered_image);
        deleteButton.hide();
    });
});
JSFiddle:http://jsfiddle.net/djuVT/ - 以上解决方案使用jQuery的.offset()方法和position:absolute

JSFiddle:http://jsfiddle.net/djuVT/1/ - 使用Javascript的.getBoundingClientRect()方法和position:fixed; CSS

的替代解决方案