JS中使用textPath实现线条上的文字


Posted in Javascript onDecember 25, 2017

近期在项目中要实现关系图,需要在线条上绘制文字。要实现这个功能,我们需要在SVG中连接的线条从标签line修改为path,这样才可能实现类似如下的效果:

JS中使用textPath实现线条上的文字 

1个简单的例子如下所示:

<svg viewBox="0 0 1000 300" 
   xmlns="http://www.w3.org/2000/svg"  
   xmlns:xlink="http://www.w3.org/1999/xlink"> 
  <path id="MyPath" 
     d="M 100 200  
       C 200 100 300  0 400 100 
       C 500 200 600 300 700 200 
       C 800 100 900 100 900 100" fill="none" stroke="red"/> 
 <text font-family="Verdana" font-size="42.5"> 
  <textPath xlink:href="#MyPath" rel="external nofollow" > 
   We go up, then we go down, then up again 
  </textPath> 
 </text> 
</svg>

在这里我们需要实现1个path,然后设置其ID属性,之后我们创建textPath标签,并链接到上述的ID属性,这样就可以实现在路径上关联文字了。

而在D3中我们可以这样操作:

var link = svg.append("g").selectAll(".edgepath") 
       .data(graph.links) 
       .enter() 
       .append("path") 
       .style("stroke-width",0.5) 
       .style("fill","none") 
       .attr("marker-end",function(d){ 
        return "url(#"+d.source+")"; 
       }) 
       .style("stroke","black") 
       .attr("id", function(d,i){ 
        return "edgepath"+i; 
       }); 
var edges_text = svg.append("g").selectAll(".edgelabel") 
        .data(graph.nodes) 
          .enter() 
          .append("text") 
          .attr("class","edgelabel") 
          .attr("id", function(d,i){ 
           return "edgepath"+i; 
          }) 
          .attr("dx",80) 
          .attr("dy",0); 
edges_text.append("textPath") 
      .attr("xlink:href", function(d,i){ 
        return "#edgepath"+i; 
      }).text(function(d){ 
       return d.id; 
      })

实际上这段代码就是上述例子的实现,这样就可以避免编写繁琐的SVG代码了。

总结

以上所述是小编给大家介绍的使用textPath实现线条上的文字,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
Jquery进度条插件 Progress Bar小问题解决
Jul 12 Javascript
js点击事件链接的问题解决
Apr 25 Javascript
针对初学者的jQuery入门指南
Aug 15 Javascript
js运动事件函数详解
Oct 21 Javascript
JSP防止网页刷新重复提交数据的几种方法
Nov 19 Javascript
基于jQuery实现火焰灯效果导航菜单
Jan 04 Javascript
javascript解析ajax返回的xml和json格式数据实例详解
Jan 05 Javascript
基于zTree树形菜单的使用实例
Dec 25 Javascript
Webpack中publicPath路径问题详解
May 03 Javascript
node.js实现为PDF添加水印的示例代码
Dec 05 Javascript
详解angular2 控制视图的封装模式
Dec 27 Javascript
vue自动添加浏览器兼容前后缀操作
Aug 13 Javascript
Angular4.0中引入laydate.js日期插件的方法教程
Dec 25 #Javascript
JS实现标签滚动切换效果
Dec 25 #Javascript
JS实现图片居中悬浮效果
Dec 25 #Javascript
JS+CSS实现滚动数字时钟效果
Dec 25 #Javascript
Vue.js通用应用框架-Nuxt.js的上手教程
Dec 25 #Javascript
微信小程序录音与播放录音功能
Dec 25 #Javascript
利用vue + element实现表格分页和前端搜索的方法
Dec 25 #Javascript
You might like
php学习 函数 课件
2008/06/15 PHP
php单态设计模式(单例模式)实例
2014/11/18 PHP
php短信接口代码
2016/05/13 PHP
利用WebBrowser彻底解决Web打印问题(包括后台打印)
2009/06/22 Javascript
两种不同的方法实现js对checkbox进行全选和反选
2014/05/13 Javascript
PHP+mysql+Highcharts生成饼状图
2015/05/04 Javascript
全面解析Angular中$Apply()及$Digest()的区别
2016/08/04 Javascript
vue2.0+webpack环境的构造过程
2016/11/08 Javascript
基于zTree树形菜单的使用实例
2017/12/25 Javascript
React冒泡和阻止冒泡的应用详解
2020/08/18 Javascript
vue实现几秒后跳转新页面代码
2020/09/09 Javascript
jQuery实现放大镜案例
2020/10/19 jQuery
跟老齐学Python之print详解
2014/09/28 Python
使用Python读写文本文件及编写简单的文本编辑器
2016/03/11 Python
python实现生命游戏的示例代码(Game of Life)
2018/01/24 Python
在keras 中获取张量 tensor 的维度大小实例
2020/06/10 Python
音频处理 windows10下python三方库librosa安装教程
2020/06/20 Python
python tkiner实现 一个小小的图片翻页功能的示例代码
2020/06/24 Python
解决Python 写文件报错TypeError的问题
2020/10/23 Python
弄清Pytorch显存的分配机制
2020/12/10 Python
Chemist Warehouse官方海外旗舰店:澳洲第一连锁大药房
2017/08/25 全球购物
Perfume’s Club德国官网:在线购买香水
2019/04/08 全球购物
彪马荷兰官网:PUMA荷兰
2019/05/08 全球购物
施工资料员岗位职责
2014/01/06 职场文书
小学运动会广播稿200字(十二篇)
2014/01/14 职场文书
房屋公证委托书
2014/04/03 职场文书
南京青奥会口号
2014/06/12 职场文书
董事长助理工作职责范本
2014/07/01 职场文书
报考公务员诚信承诺书
2014/08/29 职场文书
挂职个人工作总结
2015/03/05 职场文书
浪漫的婚礼主持词
2015/06/30 职场文书
2015年暑期社会实践报告
2015/07/13 职场文书
新兵入伍决心书
2015/09/22 职场文书
餐厅开业活动方案
2019/07/08 职场文书
AudioContext 实现音频可视化(web技术分享)
2022/02/24 Javascript
python中的getter与setter你了解吗
2022/03/24 Python