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增加鼠标中间功能mousewheel的实例代码
Sep 05 Javascript
js中对象的声明方式以及数组的一些用法示例
Dec 11 Javascript
js格式化时间和js格式化时间戳示例
Feb 10 Javascript
深入理解JavaScript程序中内存泄漏
Mar 17 Javascript
基于jQuery实现动态搜索显示功能
May 05 Javascript
js实现华丽的九九乘法表效果
Mar 29 Javascript
JS实现快速比较两个字符串中包含有相同数字的方法
Sep 11 Javascript
angularjs性能优化的方法
Sep 05 Javascript
使用vue2.0创建的项目的步骤方法
Sep 25 Javascript
Vue一次性简洁明了引入所有公共组件的方法
Nov 28 Javascript
微信小程序系列之自定义顶部导航功能
May 21 Javascript
解决layUI的页面显示不全的问题
Sep 20 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
Ajax+PHP 边学边练之四 表单
2009/11/27 PHP
PHP文件读写操作相关函数总结
2014/11/18 PHP
PHP微信公众号自动发送红包API
2016/06/01 PHP
Yii2框架控制器、路由、Url生成操作示例
2019/05/27 PHP
javascript 命名规则 变量命名规则
2010/02/25 Javascript
网页中可关闭的漂浮窗口实现可自行调节
2013/08/20 Javascript
js图片向右一张张滚动效果实例代码
2013/11/23 Javascript
在jQuery中处理XML数据的大致方法
2015/08/14 Javascript
JS+CSS实现下拉列表框美化效果(3款)
2015/08/15 Javascript
浅谈JS中json数据的处理
2016/06/30 Javascript
AngularJS延迟加载html template
2016/07/27 Javascript
如何处理JSON中的特殊字符
2016/11/30 Javascript
angular实现form验证实例代码
2017/01/17 Javascript
AngularJS 实现点击按钮获取验证码功能实例代码
2017/07/13 Javascript
原生js中ajax访问的实例详解
2017/09/19 Javascript
js实时监控文本框输入字数的实例代码
2018/01/18 Javascript
浅析Node.js非对称加密方法
2018/01/29 Javascript
react-router4按需加载(踩坑填坑)
2019/01/06 Javascript
详解小程序input框失焦事件在提交事件前的处理
2019/05/05 Javascript
js之切换全屏和退出全屏实现代码实例
2019/09/09 Javascript
three.js利用gpu选取物体并计算交点位置的方法示例
2019/11/25 Javascript
原生javascript制作的拼图游戏实现方法详解
2020/02/23 Javascript
在vue中配置不同的代理同时访问不同的后台操作
2020/09/11 Javascript
vue 获取url参数、get参数返回数组的操作
2020/11/12 Javascript
[54:02]2018DOTA2亚洲邀请赛 4.1 小组赛 B组 IG vs VGJ.T
2018/04/03 DOTA
windows及linux环境下永久修改pip镜像源的方法
2016/11/28 Python
Python基于Matplotlib库简单绘制折线图的方法示例
2017/08/14 Python
python画图常规设置方式
2020/03/05 Python
python遍历路径破解表单的示例
2020/11/21 Python
GAP欧盟网上商店:GAP EU
2016/09/13 全球购物
Pretty Green美国:英式摇滚服饰风格代表品牌之一
2019/01/23 全球购物
技术总监管理岗位职责
2014/03/09 职场文书
合作意向书模板
2014/03/31 职场文书
公安学专业求职信
2014/07/27 职场文书
2019广播稿怎么写
2019/04/17 职场文书