Raphael JS和Text定位?

Rad*_*Hex 44 javascript svg raphael

我试图通过提供x,y坐标来在SVG画布中定位文本

var t = paper.text(50, 50, "Raphaël\nkicks\nbutt!");
Run Code Online (Sandbox Code Playgroud)

但不会像所有其他对象一样定位文本......

x,y坐标指定对象的中心!不是"左上角"像素!


我希望沿着一条线"左对齐"文本,与标准HTML相同.

非常感谢帮助.

Das*_*alo 150

默认情况下,text方法的Text-anchor属性设置为"middle".

如果要左对齐它,请在对象的属性中更改text-anchor:

var t = paper.text(50, 50, "Raphaël\nkicks\nbutt!").attr({'text-anchor': 'start'});
Run Code Online (Sandbox Code Playgroud)

  • 为什么这不是正确答案? (2认同)

Jim*_*dra 20

我知道你没有说你需要将它垂直对齐到顶部,但是如果你想使用paper.text而不是paper.print ...并希望垂直对齐到顶部.

试试这个:

function alignTop(t) {
    var b = t.getBBox();
    var h = Math.abs(b.y2) - Math.abs(b.y) + 1;

    t.attr({
        'y': b.y + h
    });
}
Run Code Online (Sandbox Code Playgroud)

然后将Raphael文本对象传递给它.它将为您排列最佳位置.并只是调用该功能


Rad*_*Hex 10

解决!

通过使用以下

paper.print(100, 100, "Test string", paper.getFont("Times", 800), 30);
Run Code Online (Sandbox Code Playgroud)

它现在对齐左边的文字.

  • paper.print()与paper.text()不同,因为print()返回一组对象,其中每个对象都是类似于字符的路径.请参阅@dasha salo的答案,了解正确的"文本"解决方案.遗憾的是,目前没有垂直对齐属性. (8认同)