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 相关文章推荐
为JavaScript添加重载函数的辅助方法
Jul 04 Javascript
javascript 45种缓动效果 非常酷
Jun 28 Javascript
jquery和javascript的区别(常用方法比较)
Jul 04 Javascript
javascript:void(0)是什么意思示例介绍
Nov 17 Javascript
如何防止回车(enter)键提交表单
May 11 Javascript
JavaScript数据类型检测代码分享
Jan 26 Javascript
一个炫酷的Bootstrap导航菜单
Dec 28 Javascript
javascript自执行函数
Feb 10 Javascript
Jquery异步上传文件代码实例
Nov 13 jQuery
JS代码优化的8点建议
Feb 04 Javascript
js实现文章目录索引导航(table of content)
May 10 Javascript
JavaScript鼠标悬停事件用法解析
May 15 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中实现中文字符进制转换原理分析
2011/12/06 PHP
php在服务器执行exec命令失败的解决方法
2012/03/03 PHP
php禁止浏览器使用缓存页面的方法
2014/11/07 PHP
ThinkPHP3.2.2实现持久登录(记住我)功能的方法
2016/05/16 PHP
PHP中error_reporting函数用法详细介绍
2017/06/11 PHP
点弹代码 点击页面任何位置都可以弹出页面效果代码
2012/09/17 Javascript
jQuery$命名冲突怎么办如何解决
2014/01/16 Javascript
jquery实现不同大小浏览器使用不同的css样式表的方法
2014/04/02 Javascript
jquery取消事件冒泡的三种方法(推荐)
2016/05/28 Javascript
JavaScript进阶练习及简单实例分析
2016/06/03 Javascript
浅谈jquery的html方法里包含特殊字符的处理
2016/11/30 Javascript
VUE实现一个分页组件的示例
2017/09/13 Javascript
Vue官网todoMVC示例代码
2018/01/29 Javascript
JavaScript生成指定范围的时间列表
2018/03/19 Javascript
Vue2.2.0+新特性整理及注意事项
2018/08/22 Javascript
vue通过滚动行为实现从列表到详情,返回列表原位置的方法
2018/08/31 Javascript
使用vue实现各类弹出框组件
2019/07/03 Javascript
深入解析Python中的WSGI接口
2015/05/11 Python
一篇文章搞懂Python的类与对象名称空间
2018/12/10 Python
python内置模块collections知识点总结
2019/12/19 Python
python GUI库图形界面开发之PyQt5窗口类QMainWindow详细使用方法
2020/02/26 Python
pandas之分组groupby()的使用整理与总结
2020/06/18 Python
网络维护管理员的自我评价分享
2013/11/11 职场文书
行政总经理岗位职责
2013/12/05 职场文书
生日派对邀请函
2014/01/13 职场文书
考试没考好检讨书
2014/01/31 职场文书
商场消防演习方案
2014/02/12 职场文书
大学生村官个人对照检查材料(群众路线)
2014/09/26 职场文书
企业三严三实学习心得体会
2014/10/13 职场文书
博士给导师的自荐信
2015/03/06 职场文书
可可西里观后感
2015/06/08 职场文书
工商行政处罚决定书
2015/06/24 职场文书
财务管理制度范本
2015/08/04 职场文书
幼儿园保育员随笔
2015/08/14 职场文书
教师节主题班会教案
2015/08/17 职场文书
python如何在word中存储本地图片
2021/04/07 Python