Raphaeljs Substring文本属性
Raphaeljs Substring Text attributes
我想知道是否有可能改变拉斐尔文本对象的子字符串的属性。例如,我想在raphael文本对象中,将下面字符串"the magical wizard统治世界!"中的单词wizard加粗。我已经看过使用Raphael.print()方法,我需要一些来自文本的属性用于代码的其他部分。
字体是在元素级别设置的,就像在常规html中一样。为了给特定的单词应用单独的字体或样式,您需要将文本分成单独的元素。
var start = paper.text(20, 20, "The magical ");
start.attr({ "text-anchor": "start" });
var startBox = start.getBBox();
var bold = paper.text(startBox.width + startBox.x, 20, "wizard ");
bold.attr({ "text-anchor": "start", "font-weight": "bold" });
var boldBox = bold.getBBox();
var end = paper.text(boldBox.width + boldBox.x, 20, "ruled the world!");
end.attr({ "text-anchor": "start" });
gilly3解决方案的一个问题是元素的x坐标是绝对的。当更改文本时,例如bold.attr({"text":"sorcerer"})
,元素将重叠。
另一种解决方案是用相对定位的自定义tspan
元素组成一个文本元素。从对象模型的角度来看,这也更简洁一些。但是,它确实需要对text元素进行一些直接操作。代码:
var content = paper.text(20, 20, "The magical").attr({ "text-anchor": "start" });
var txt1=Raphael._g.doc.createTextNode(" wizard ");
var txt2=Raphael._g.doc.createTextNode("ruled the world!");
var svgNS = "http://www.w3.org/2000/svg";
var ts1 = Raphael._g.doc.createElementNS(svgNS, "tspan");
var ts2 = Raphael._g.doc.createElementNS(svgNS, "tspan");
ts1.setAttribute("font-weight","bold");
ts1.appendChild(txt1);
ts2.appendChild(txt2);
content.node.appendChild(ts1);
content.node.appendChild(ts2);
content.node.children[1].textContent=" sorcerer ";
免责声明:当改变父元素的x,y,dx,dy
时,Raphael可以改变tspan的相对位置,尽管svg本身可以处理这个。可以使用转换字符串代替。例子:
content.node.setAttribute("x",500); //works
content.attr({"x":500}); //undesired result
content.transform("t100"); //works
相关文章:
- 手柄'img'单击事件并插入'alt'使用jQuery将属性转换为文本框
- 如何解析文本区域中的结构化字符串数据(接近JSON)以检索其所需的属性
- JavaScript 文本节点属性
- 更改html标记或其子标记(而不是其属性)文本中的日期格式
- 如何在弹出窗口中隐藏文本属性'It’传单上没有填写
- 更改多个 iframe 中的文本框属性
- 我想从使用onkeypress事件的文本区域获取一个属性
- 单击TextArea'时,文本区域中的属性名称是什么;s上下箭头按钮
- 无法读取未定义的属性“替换” - 替换 JS 生成的 HTML 中的文本
- 使用 CSS3 数据属性进行客户端文本搜索
- 将文本值匹配/分配给属性
- 如何替换元素属性中的部分文本
- FabricJS CurvedText对象(扩展)在更新间距和文本属性时未显示
- jQuery文本属性中的Html代码
- 如何编写将获取属性文本的正则表达式
- 更改属性文本并使用挖空保留输入的值
- 点击时显示弹出窗口,属性文本为JavaScript或jQuery
- 如何在jquery中更改json的属性文本
- 为什么在此示例中出现“无法读取未定义的属性'文本'”
- 如何使用 ajax 获取属性文本