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



我正在制作一个富文本编辑器,并试图在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";
}

如有任何帮助,我们将不胜感激!

html

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

和css

#delete_button{
    position:absolute;
    top:0;
    left:0
    z-index: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 的替代解决方案

最新更新