html - Raphael js文本定位: centering text in a circle

标签 html css raphael centering

我正在使用 Raphael js 绘制带圆圈的数字。问题是每个数字都有不同的宽度/高度,因此使用一组坐标将文本居中是行不通的。文本在 IE、FF 和 Safari 之间显示不同。有没有动态的方法来找到数字的高度/宽度并相应地居中?

这是我的测试页面:

http://jesserosenfield.com/fluid/test.html

和我的代码:

function drawcircle(div, text) { 
    var paper = Raphael(div, 26, 26); //<<
    var circle = paper.circle(13, 13, 10.5);
    circle.attr("stroke", "#f1f1f1");
    circle.attr("stroke-width", 2);
    var text = paper.text(12, 13, text); //<<
    text.attr({'font-size': 15, 'font-family': 'FranklinGothicFSCondensed-1, FranklinGothicFSCondensed-2'});
    text.attr("fill", "#f1f1f1");
}

window.onload = function () {
    drawcircle("c1", "1");
    drawcircle("c2", "2");
    drawcircle("c3", "3");
};

非常感谢!

最佳答案

(重写的答案):Raphael.js 默认情况下水平和垂直居中文本节点。

这里的“居中”意味着 paper.text() 方法的 x, y 参数期望文本边界框的中心。

因此,只需指定与圆相同的 x、y 值即可产生所需的结果:

var circle = paper.circle(13, 13, 10.5);
var text = paper.text(13, 13, "10");

Example output

( jsFiddle )

相关源码:

关于html - Raphael js文本定位: centering text in a circle,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2547927/

相关文章:

javascript - 在 React 中动态设置文本区域的 PlaceHolder 颜色

jquery - 仅对以特定字符开头的字符串使用 jquery 更改 css

javascript - raphaeljs/javascript - 关于将 'this"/object 变量放入鼠标悬停函数中

javascript - 如何在raphael JS库中定义纸张?

jquery - 可汗学院的提示功能是如何编码的

javascript - 按经纬度形式更新谷歌地图

jquery:使用 $.ajax 或 $.get 方法加载 html 元素

html - 如何防止在 Bootstrap 中覆盖 div

javascript - 从文件上传设置div背景图片

html - 移动设备上不需要的缩放