如何使用RaphaelJS将文本元素约束在正方形中

How to constrain a text element within an square with RaphaelJS?

本文关键字:约束 正方形 元素 文本 何使用 RaphaelJS      更新时间:2023-09-26

我试图将一个具有自定义字体的文本元素约束在一个正方形中。我很难让约束发生。

我的移动功能代码如下:

if (this.attr("y") > offsetY || this.attr("x") > offsetX) { // keep dragging & storing original x and y
    this.attr({
        x : this.ox + dx,
        y : this.oy + dy
    });
} else {
    nowX = Math.min(offsetX, this.ox + dx);
    nowY = Math.min(offsetY, this.oy + dy);
    nowX = Math.max(0, nowX);
    nowY = Math.max(0, nowY);
    this.attr({
        x : nowX,
        y : nowY
    });
}

约束从未发生过。然而,如果我在这个代码中使用两个正方形,它是有效的。我在这里俯瞰什么?

感谢您的回答:)

如果在调用paper.text()时使用默认的文本锚定值"middle",则x和y属性将返回文本跨度中心的坐标,而不是像使用rect那样返回其左上角。

与其使用xy属性,不如通过element.getBBox()获取坐标,然后从生成的对象中使用xy。这将使您现有的逻辑能够不受阻碍地工作。