首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在画布中将文本框弹出(Jquery工具提示或类似内容)添加到Fabric JS图像中?

问如何在画布中将文本框弹出(Jquery工具提示或类似内容)添加到Fabric JS图像中?
EN

Stack Overflow用户
提问于 2015-01-09 22:30:42
回答 2查看 7.7K关注 0票数 5

我正在做一个面料JS项目,用它的房间位置来绘制地板地图。

在每个房间里,我都添加了一个图标。每当鼠标悬停在图标上方时,我希望有一个文本框弹出(例如jquery工具提示)。

文本框应显示房间信息(电话号码\ person \ size \等)我找到了这个谷歌组的帖子,但是除了共享此链接之外,没有人真正描述过这个解决方案。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-01-20 16:20:00

第一步:设置你的观察者

步骤2:加载对话框

第三步:找出页面上边框的位置,并移动对话框。

代码语言:javascript
复制
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};
}

这应该足以让你开始工作了。如果有什么不合理的话请告诉我。

票数 8
EN

Stack Overflow用户

发布于 2020-08-11 09:16:09

在画布下面添加span元素

代码语言:javascript
复制
<span ref="toolTip" class="toolTip">ToolTip</span>

为span元素添加样式NB:默认情况下可见性是隐藏的

代码语言:javascript
复制
.toolTip{
  position: absolute;
  z-index: 1;
  background: rgb(119, 128, 0);
  height: 30px;
  width: 120px;
  padding: 8px;
  font-size: 13px;
  color: #fff;
  visibility: hidden;
}

添加鼠标,鼠标移出事件。

代码语言:javascript
复制
 this.$data.canvas.on('mouse:over', function (e) {
        // console.log(e.e.offsetX)
        if (e.target && e.target.feature === 'Seat') {
          self.$refs.toolTip.innerHTML =
            'Seat: ' + e.target.label + '  Row: ' + e.target.rowLabel
          self.$refs.toolTip.style.visibility = 'visible'
          self.$refs.toolTip.style.top = e.e.offsetY + 'px'
          self.$refs.toolTip.style.left = e.e.offsetX + 'px'
        }
      })
      this.$data.canvas.on('mouse:out', function (e) {
        self.$refs.toolTip.style.visibility = 'hidden'
      })
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27870315

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档