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 相关文章推荐
js下弹出窗口的变通
Apr 18 Javascript
jQuery 开天辟地入门篇一
Dec 09 Javascript
用jquery实现学校的校历(asp.net+jquery ui 1.72)
Jan 01 Javascript
基于jQuery的可用于选项卡及幻灯的切换插件
Mar 28 Javascript
js 连接数据库如何操作数据库中的数据
Nov 23 Javascript
加载列表时jquery获取ul中第一个li的属性
Nov 02 Javascript
JS实现样式清新的横排下拉菜单效果
Oct 09 Javascript
jquery 无限极下拉菜单的简单实例(精简浓缩版)
May 31 Javascript
浅谈JS中的!=、== 、!==、===的用法和区别
Sep 24 Javascript
Vue的MVVM实现方法
Aug 16 Javascript
js实现图片粘贴上传到服务器并展示的实例
Nov 08 Javascript
在antd Form表单中select设置初始值操作
Nov 02 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/11/16 PHP
PHP程序开发范例学习之表单 获取文本框的值
2011/08/08 PHP
PHP图片裁剪与缩放示例(无损裁剪图片)
2017/02/08 PHP
ThinkPHP 3使用OSS的方法
2018/07/19 PHP
JavaScript DOM 学习第三章 内容表格
2010/02/19 Javascript
IE6图片加载的一个BUG解决方法
2010/07/13 Javascript
原生js实现查找/添加/删除/指定元素的class
2013/04/12 Javascript
js保留两位小数使用toFixed实现
2013/07/29 Javascript
使用JS读秒使用示例
2013/09/21 Javascript
用jquery写的一个万年历(自写)
2014/01/20 Javascript
jquery mobile动态添加元素之后不能正确渲染解决方法说明
2014/03/05 Javascript
JavaScript使用二分查找算法在数组中查找数据的方法
2015/04/07 Javascript
js表单提交和submit提交的区别实例分析
2015/12/10 Javascript
最全面的JS倒计时代码
2016/09/17 Javascript
简单学习vue指令directive
2016/11/03 Javascript
js 判断登录界面的账号密码是否为空
2017/02/08 Javascript
jQuery实现使用sort方法对json数据排序的方法
2018/04/17 jQuery
vue删除html内容的标签样式实例
2018/09/13 Javascript
关于JS解构的5种有趣用法
2019/09/05 Javascript
分享8个JavaScript库可更好地处理本地存储
2020/10/12 Javascript
vantUI 获得piker选中值的自定义ID操作
2020/11/04 Javascript
详解Django中Request对象的相关用法
2015/07/17 Python
浅谈python jieba分词模块的基本用法
2017/11/09 Python
Python实现矩阵转置的方法分析
2017/11/24 Python
基于Python pip用国内镜像下载的方法
2018/06/12 Python
用pycharm开发django项目示例代码
2019/06/13 Python
浅谈Python中函数的定义及其调用方法
2019/07/19 Python
解决Django migrate不能发现app.models的表问题
2019/08/31 Python
python scrapy重复执行实现代码详解
2019/12/28 Python
tensorflow获取预训练模型某层参数并赋值到当前网络指定层方式
2020/01/24 Python
如何使用 Python 读取文件和照片的创建日期
2020/09/05 Python
The Athlete’s Foot新西兰:新西兰最大的运动鞋零售商
2019/12/23 全球购物
副护士长竞聘演讲稿
2014/04/30 职场文书
2014年领导班子专项整治整改方案
2014/09/28 职场文书
团员年度个人总结
2015/02/26 职场文书
辞职报告(范文三篇)
2019/08/27 职场文书