如何在画布内的Fabric JS图片上添加文本框弹出(Jquery tooltip或类似)?

问题描述 投票:5回答:2

我正在做一个Fabric JS项目,以映射一个楼层与其房间的位置。 在每个房间的位置,我添加了一个图标。我想在每次鼠标悬停在图标上方时弹出一个文本框(如jquery tooltip)。文本框应该显示房间信息(电话号码/人/大小/等)我发现 这个谷歌群发但除了分享之外,没有人真正描述过解决方案。这个环节

javascript jquery fabricjs jquery-tooltip
2个回答
8
投票

第1步:设置你的观察者

第二步:加载对话框

第三步:找出边界矩形在页面上的位置,然后移动对话框。

canvas.observe('mouse:over', function (e) {
    console.log("Everyday I'm hovering");
    showImageTools(e.target);
});
canvas.observe('mouse:out', function (e) {
    $('#imageDialog').remove();
});
function showImageTools (e) {
    var url = 'dialog/imageDialog.htm';
    $.get(url, function(data) {
    // Don't add it twice
    if (!$('#imageDialog').length) {
        $(body).append(data);
    }
    moveImageTools();
});

function moveImageTools () {
    var w = $('#imageDialog').width();
    var h = $('#imageDialog').height();
    var e = canvas.getActiveObject();
    var coords = getObjPosition(e);
    // -1 because we want to be inside the selection body
    var top = coords.bottom - h - 1;
    var left = coords.right - w - 1;
    $('#imageDialog').show();
    $('#imageDialog').css({top: top, left: left});
}
function getObjPosition (e) {
    // Get dimensions of object
    var rect = e.getBoundingRect();
    // We have the bounding box for rect... Now to get the canvas position
    var offset = canvas.calcOffset();
    // Do the math - offset is from $(body)
    var bottom = offset._offset.top + rect.top + rect.height;
    var right = offset._offset.left + rect.left + rect.width;
    var left = offset._offset.left + rect.left;
    var top = offset._offset.top + rect.top;
    return {left: left, top: top, right: right, bottom: bottom};
}

这应该足以让你开始。如果有任何不明白的地方,请告诉我。

© www.soinside.com 2019 - 2024. All rights reserved.