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 相关文章推荐
JSON 入门指南 想了解json的朋友可以看下
Aug 26 Javascript
JQuery从头学起第三讲
Jul 06 Javascript
JavaScript之HTMLCollection接口代码
Apr 27 Javascript
网站如何做到完全不需要jQuery也可以满足简单需求
Jun 27 Javascript
Node.js模块封装及使用方法
Mar 06 Javascript
JS新包管理工具yarn和npm的对比与使用入门
Dec 09 Javascript
javascript 组合按键事件监听实现代码
Feb 21 Javascript
原生js实现简单的Ripple按钮实例代码
Mar 24 Javascript
react-router v4如何使用history控制路由跳转详解
Jan 09 Javascript
Angular @HostBinding()和@HostListener()用法
Mar 05 Javascript
对vue中v-if的常见使用方法详解
Sep 28 Javascript
antd配置config-overrides.js文件的操作
Oct 31 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
一个程序下载的管理程序(一)
2006/10/09 PHP
用文本文件制作留言板提示(上)
2006/10/09 PHP
PHP 和 XML: 使用expat函数(三)
2006/10/09 PHP
PHP技术开发技巧分享
2010/03/23 PHP
php二维数组用键名分组相加实例函数
2013/11/06 PHP
php判断目录存在的简单方法
2019/09/26 PHP
javascript实现动态增加删除表格行(兼容IE/FF)
2007/04/02 Javascript
javascript cookie解码函数(兼容ff)
2008/03/17 Javascript
Dreamweaver jQuery智能提示插件,支持版本提示,支持1.6api
2011/07/31 Javascript
javaScript矢量图表库-gRaphael几行代码实现精美的条形图/饼图/点图/曲线图
2013/01/09 Javascript
浅谈JavaScript中Date(日期对象),Math对象
2015/02/05 Javascript
javascript实现简单的鼠标拖动效果实例
2015/04/10 Javascript
图解Sublime Text3使用技巧
2015/12/21 Javascript
JavaScript面向对象程序设计教程
2016/03/29 Javascript
js前端面试题及答案整理(一)
2016/08/26 Javascript
javascript设计模式 ? 建造者模式原理与应用实例分析
2020/04/10 Javascript
python中enumerate的用法实例解析
2014/08/18 Python
Python递归遍历列表及输出的实现方法
2015/05/19 Python
python+django+sql学生信息管理后台开发
2018/01/11 Python
Python实现文件信息进行合并实例代码
2018/01/17 Python
对pandas中to_dict的用法详解
2018/06/05 Python
Python中判断子串存在的性能比较及分析总结
2019/06/23 Python
Python Subprocess模块原理及实例
2019/08/26 Python
Python中常见的数制转换有哪些
2020/05/27 Python
CSS3 按钮边框动画的实现
2020/11/12 HTML / CSS
意大利体育用品网上商城:Nencini Sport
2016/08/18 全球购物
俄罗斯最大的在线珠宝大卖场:Nebo
2019/12/08 全球购物
英文版餐饮运营管理求职信
2013/11/06 职场文书
大学自我鉴定
2013/12/20 职场文书
高中生学期学习自我评价
2014/02/24 职场文书
考博专家推荐信
2014/05/10 职场文书
安全承诺书格式
2014/05/21 职场文书
幼儿园音乐教学反思
2016/02/18 职场文书
2019年教师入党申请书
2019/06/27 职场文书
创业计划书之酒店
2019/08/30 职场文书
聊聊Python中关于a=[[]]*3的反思
2021/06/02 Python