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 23 Javascript
ExtJs设置GridPanel表格文本垂直居中示例
Jul 15 Javascript
JS 获取滚动条高度示例代码
Oct 24 Javascript
jQuery获取当前对象标签名称的方法
Feb 07 Javascript
JavaScript使用setTimeout实现延迟弹出警告框的方法
Apr 07 Javascript
Backbone.js框架中简单的View视图编写学习笔记
Feb 14 Javascript
jQuery的Each比JS原生for循环性能慢很多的原因
Jul 05 Javascript
基于jQuery插件jqzoom实现的图片放大镜效果示例
Jan 23 Javascript
Node.js数据库操作之连接MySQL数据库(一)
Mar 04 Javascript
JavaScript中为事件指定处理程序的五种方式分析
Jul 27 Javascript
js中的reduce()函数讲解
Jan 18 Javascript
JavaScript对象属性操作实例解析
Feb 04 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 中include()与require()的对比
2006/10/09 PHP
php cookies中删除的一般赋值方法
2011/05/07 PHP
利用ThinkPHP内置的ThinkAjax实现异步传输技术的实现方法
2011/12/19 PHP
php中动态变量用法实例
2015/06/10 PHP
PHP读取XML格式文件的方法总结
2017/02/27 PHP
PHP延迟静态绑定的深入讲解
2018/04/02 PHP
php + WebUploader实现图片批量上传功能
2019/05/06 PHP
PHP call_user_func和call_user_func_array函数的简单理解与应用分析
2019/11/25 PHP
thinkphp5实现微信扫码支付
2019/12/23 PHP
超越Jquery_01_isPlainObject分析与重构
2010/10/20 Javascript
一个分享按钮的插件使用介绍(可扩展,内附开发制作流程)
2011/09/19 Javascript
js 获取和设置css3 属性值的实现方法
2013/05/06 Javascript
基于javascript如何传递特殊字符
2015/11/30 Javascript
js 点击a标签 获取a的自定义属性方法
2016/11/21 Javascript
如何清除IE10+ input X 文本框的叉叉和密码输入框的眼睛图标
2016/12/21 Javascript
详解nodejs 文本操作模块-fs模块(五)
2016/12/23 NodeJs
详解javascript中对数据格式化的思考
2017/01/23 Javascript
JS表单验证方法实例小结【电话、身份证号、Email、中文、特殊字符、身份证号等】
2017/02/14 Javascript
Swiper 4.x 使用方法(移动端网站的内容触摸滑动)
2018/05/17 Javascript
vue中引用swiper轮播插件的教程详解
2018/08/16 Javascript
Node.JS在命令行中检查Chrome浏览器是否安装并打开指定网址
2019/05/21 Javascript
python多个模块py文件的数据共享实例
2019/01/11 Python
Ubuntu下Anaconda和Pycharm配置方法详解
2019/06/14 Python
Python 进程之间共享数据(全局变量)的方法
2019/07/16 Python
html5移动端自适应布局的实现
2020/04/15 HTML / CSS
专项法律服务方案
2014/06/11 职场文书
教室标语大全
2014/06/21 职场文书
舞蹈教育学专业求职信
2014/06/29 职场文书
个人对照检查材料思想汇报
2014/09/26 职场文书
学校师德师风整改方案
2014/10/28 职场文书
中班下学期个人总结
2015/02/12 职场文书
上班迟到检讨书范文
2015/05/06 职场文书
我是特种兵观后感
2015/06/11 职场文书
Angular CLI发布路径的配置项浅析
2021/03/29 Javascript
redis实现的四种常见限流策略
2021/06/18 Redis
python机器学习创建基于规则聊天机器人过程示例详解
2021/11/02 Python