当前位置: 首页 > 面试题库 >

如何在JavaScript中对SVG文本进行换行?

南门向荣
2023-03-14
问题内容

所以这是我所拥有的:

<path class="..." onmousemove="show_tooltip(event,'very long text 
    \\\n I would like to linebreak')" onmouseout="hide_tooltip()" d="..."/>

<rect class="tooltip_bg" id="tooltip_bg" ... />
<text class="tooltip" id="tooltip" ...>Tooltip</text>

<script>
<![CDATA[
function show_tooltip(e,text) {
    var tt = document.getElementById('tooltip');
    var bg = document.getElementById('tooltip_bg');

    // set position ...

    tt.textContent=text;

    bg.setAttribute('width',tt.getBBox().width+10);
    bg.setAttribute('height',tt.getBBox().height+6);

    // set visibility ...
}
...

现在,即使我使用alert(),我的很长的工具提示文本也没有换行符。它向我显示文本实际上有两行。(不过,它包含一个“ \”,请问如何将其删除?) 我无法在任何地方使用CDATA。


问题答案:

SVG 1.1不支持此功能。SVG 1.2确实具有textArea自动换行的元素,但并非在所有浏览器中都实现。SVG 2
并未计划实现textArea,但确实具有自动包装的文本。

但是,鉴于您已经知道换行应在何处发生,可以将文本分成多个<tspan>,每个都带有x="0"dy="1.4em"来模拟实际的文本行。例如:

<g transform="translate(123 456)"><!-- replace with your target upper left corner coordinates -->
  <text x="0" y="0">
    <tspan x="0" dy="1.2em">very long text</tspan>
    <tspan x="0" dy="1.2em">I would like to linebreak</tspan>
  </text>
</g>

当然,由于要使用JavaScript进行操作,因此必须手动创建每个元素并将其插入DOM。



 类似资料:
  • 问题内容: 请让我知道如何在JavaScript中换行。 我想要在主题中使用换行符。我需要的输出是: 问题答案: 添加到要在URL上对换行符进行编码的任何位置。 是回车符 是换行符 这是Windows机器上的新换行顺序,尽管在linux和macs上不一样,但两者都应起作用。 如果要在实际的javascript中换行,请使用转义序列。

  • 对于我的网站,我需要为我的应用程序创建下载按钮。但我不知道如何在按钮的文本边距。

  • 问题内容: 我有一长行代码,我想在多行中分解。我使用什么,语法是什么? 例如,添加一串字符串, 并分成两行,如下所示: 问题答案: 线路是什么?你可以在下一行中使用参数而不出现任何问题: 否则,你可以执行以下操作: 查看样式指南以获取更多信息。 从示例行中: 要么: 请注意,样式指南指出,最好使用带括号的隐式连续符,但是在这种特殊情况下,仅在表达式周围加上括号可能是错误的方法。

  • 我想创建一个具有固定宽度的跨距,当我在跨距中键入任何内容时,如、一长串无间距文本、单词中断或换行到下一行。 有什么想法吗?

  • 问题内容: 我正在尝试在名为“ abc”的字段中搜索“ efg” c是Collection对象。我没有任何结果。我究竟做错了什么? 问题答案: 您正在生成,但查询应如下所示: 因此,尝试将代码更新为: 请记住,要使用搜索,您需要指定一个索引。查阅说明如何使用该文档的文档:http : //docs.mongodb.org/manual/reference/operator/query/text/

  • 有没有一种蜡染兼容的方法可以用SVG做自动文本换行? 我在网上找遍了,找不到确切的东西与HTML不兼容。我看到和朋友应该可以工作,但我似乎无法让他们正常工作。我也找不到一个确切有效的例子。 一个有效的 SVG 示例将不胜感激。