拉斐尔正在添加“dy”属性

2023-12-28

我正在使用 raphael 创建图像及其生成的 SVGfor paper.text() adds a <tspan dy="number">其中“number”是基于 Attr(font-size:n) 的数字

有人可以告诉我这个数字是如何计算的,因为我需要知道,因为我将序列化数据发送到服务器toJSON()(raphael 的第 3 方插件,称为 ElbertF / Raphael.JSON)并在服务器上重新创建 SVG,文本始终由此输出dy="number"

the dy值似乎也与文本相关y属性就像我舍入y重视dy值也会四舍五入到最接近的 0.5

例如:

textEmement = paper.text(Math.round(x_positionOfText),
                                                    Math.round(y_positionOfText));
textEmement.attr({ "font": "",
                   "fill": fontColour,
                   "font-family": "Arial",
                   "text-anchor": "middle",
                   "font-size": 17});

使->

<text style="text-anchor: middle; font-family: Arial; font-size: 17px;" x="161" y="48" text-anchor="middle" font="" stroke="none" fill="#ffffff" font-family="Arial" font-size="17px">
<tspan dy="5.5">Text 3</tspan>
 </text>

删除Math.round() from y_positionOfText makes

 <text style="text-anchor: middle; font-family: Arial; font-size: 17px;" x="161" y="48.188976378525" text-anchor="middle" font="" stroke="none" fill="#ffffff" font-family="Arial" font-size="17px">
 <tspan dy="5.501476378524998">Text 3</tspan>
 </text>

请注意如何y="48" gives dy="5.5" but y="48.188976378525" gives dy="5.501476378524998"

这简直要了我的命!拉斐尔为什么要这样做以及如何做!?


每当我需要了解库如何工作时,我都会阅读源代码。现在鉴于我没有写 Raphael,我无法确切地告诉你为什么 tspan 是这样创建的,但我当然可以告诉你如何:

var bb = el._getBBox(),
    dif = a.y - (bb.y + bb.height / 2);
dif && R.is(dif, "finite") && $(tspans[0], {dy: dif});

据推测,这正在解决锚定问题。它正在移动文本,以便 tspan 的中点与 y 属性对齐。

它是通过检查 y 属性和文本中间位置(边界框顶部加上一半高度)之间的差异来计算的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

拉斐尔正在添加“dy”属性 的相关文章

  • 外部触发 Raphael 事件

    我的应用程序使用 Rapha l 将一组对象拖放到页面上 每个对象都有一个click处理程序绑定 使用通过 JSON 加载时附加到对象的数据 一切正常 我现在尝试使用 Cucumber 添加一些测试覆盖率 是的 我知道我应该首先构建测试 我
  • SVG 路径字符串上的布尔运算

    我遇到了一个概念上的困难问题 简而言之 我需要找到通过不同布尔运算组合的两个向量路径的向量路径 例如并 差 交 减 如果我能像 Canvas 的 globalCompositeOperation 那样进行操作 那就太好了 我到底该怎么做呢
  • SVG 重新排序 z 索引(Raphael 可选)

    创建后如何重新排序 Raphael 或其底层 SVG 元素 更好的是 SVG 中是否存在像图层这样的东西 理想情况下 我希望有两个或多个层可以随时放置元素 背景层和前景层 如果这不是一个选择 那么将元素弹出到前面就可以了 在这种特殊情况下将
  • Raphael-拖放时检测重叠元素

    我试图通过拖放另一个元素来获取元素 例如 我有 2 个圆圈 c1 和 c2 我想要做的是 如果我将 c2 放在 c1 之上 因此它们重叠 并非完全必要 我可以得到圆圈 c1 例如 id 标题 等 http jsfiddle net Tome
  • 如何为svg提供响应式设计?

    我是拉斐尔的新手 我在div里面写了svg标签 请参阅此示例http jsfiddle net dhana36 bvs6P 1 使用 CTRL 和 CTRL 你会发现区别 HTML div class outer div
  • Raphaeljs 和 Internet Explorer,单击元素时出现问题

    我有下面一段 JavaScript 代码 当我点击它时 它基本上隐藏或显示 Raphaeljs 集 它在 Google Chrome FireFox 和 Safari 下运行得非常好 但在 Internet Explorer 下根本不行 v
  • jQuery - Raphael - SVG - 基于自定义数据的选择器

    我已将自定义数据属性分配给添加到 Raphael 画布的一些圆圈 如下所示each loop marker data transaction transaction 如何在画布上找到具有相同交易数据值的元素 目前我有代码 var found
  • Raphael JS 中的弧线动画在 Chrome 中摆动

    我在动画中看到恼人的摆动 我已经删除了包含实际动画的代码 var side 400 var paper new Raphael this 100 side paper customAttributes arc function xloc y
  • 如何将 svg 滤镜与 raphael js 一起使用?

    我想知道 我应该使用哪些技术将 svg 过滤器应用于 raphael 路径 我知道 raphael 试图尽可能多地使用 IE 跨浏览器 但我想知道是否有一种方法可以使用 javascript 添加过滤器 我建立了一个库来做到这一点 你可以这
  • 使用 Raphael JS,用具有偏移量的背景图像填充 SVG 元素

    我想要这个这个使用具有偏移量的背景图像填充 SVG 元素 https stackoverflow com questions 5239458 fill svg element with with a background image wit
  • 通过随机点绘制好看的贝塞尔曲线

    我使用 javascript 和 RaphaelJS 来通过随机点绘制一条平滑的线 并输出到 SVG 该线严格水平移动 不会沿 X 轴返回 目前 我正在使用三次贝塞尔曲线来绘制从一点到另一点的线 问题是 这条线看起来不够好 两条曲线在一个点
  • Bootstrap 轮播与 morris.js 图表冲突?

    我正在使用 morris js 绘制图表 并且我想通过引导轮播显示这些图表 但是如果我这样做 Firefox 将停止响应 它们单独工作可以很好 但如果放在一起就会崩溃 firebug 告诉我有一些与 Raphael 图书馆有关的事情 但我仍
  • Raphaël 对象:模拟点击

    是否可以模拟拉斐尔对象上的点击 我已经尝试过了 object click Error click is not a function or object dispatchEvent click Error Could not convert
  • 如何使用 JavaScript 访问 SVG 元素?

    我正在摆弄 SVG 希望能够在 Illustrator 中创建 SVG 文件并使用 JavaScript 访问元素 这是 Illustrator 推出的 SVG 文件 它似乎还向我删除的文件的开头添加了一堆垃圾
  • 使用 javascript 以编程方式创建 SVG 图像元素

    就像我的标题所说 我正在尝试使用 JavaScript 在 HTML 页面中以编程方式创建 SVG 图像元素 由于某种原因 我的基本 javascript 代码无法正常工作 但是如果我使用 raphaeljs 库 它就可以正常工作 所以我的
  • 合并来自 Raphael svg 的图像

    尝试创造步骤 1 让用户通过 Ajax Raphael 和 Raphael freetransform 上传图像 步骤 2 单击 按钮显示合并上传图像中的一张图像 问题 我发现了关于转换 Raphael svg 的类似帖子1 https s
  • 不使用Raphael javascript库中的boundingBox函数获取文本大小

    我正在尝试使用 Rahpael 库在 javascript 中创建一些带有文本的按钮 我想在绘制之前知道样式文本的大小以避免这种情况 以便我可以创建适当的背景 按钮 另外 我想避免在画布 纸张之外绘制文本 文本的位置是其中心的位置 我可以使
  • 在 Raphael js 中使路径和图像可拖动

    是否可以使用 Raphael js 在页面周围拖放除圆形和矩形之外的对象 我想添加路径和图像 然后您可以移动它们 但事实证明这很棘手 我想与 Raphael 一起解决这个问题 因为它支持触摸界面 这是代码
  • 限制在三角形内

    我正在寻找一段通用代码 javascript 它可以与 jquery UI 一起使用来限制三角形内 div 的移动 拖动 与此类似 http stackoverflow com questions 8515900 how to constr
  • SVG 中三角形的圆角

    我正在尝试制作一个具有圆角的三角形 三角形将如下所示 左下角是唯一看起来相当容易制作的角 主要是因为这是一个 90 度的 转弯 该转弯是使用QSVG 中的命令具有以下参数 Q x y height x y height RADIUS从我正在

随机推荐