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 相关文章推荐
用正则xmlHttp实现的偷(转)
Jan 22 Javascript
js页面跳转常用的几种方式
Nov 25 Javascript
jQuery登陆判断简单实现代码
Apr 21 Javascript
javascript ready和load事件的区别示例介绍
Aug 30 Javascript
js转化毫秒为时间格式代码
Apr 10 Javascript
JS实现京东首页之页面顶部、Logo和搜索框功能
Jan 12 Javascript
angular4自定义组件详解
Sep 28 Javascript
JS同步、异步、延迟加载的方法
May 05 Javascript
使用JavaScript生成罗马字符的实例代码
Jun 08 Javascript
element vue Array数组和Map对象的添加与删除操作
Nov 14 Javascript
Windows下Node爬虫神器Puppeteer安装记
Jan 09 Javascript
JavaScript 防盗链的原理以及破解方法
Dec 29 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
ThinkPHP实现将本地文件打包成zip下载
2014/06/26 PHP
PHP常用函数总结(180多个)
2016/12/25 PHP
php数据结构之顺序链表与链式线性表示例
2018/01/22 PHP
PHP折半(二分)查找算法实例分析
2018/05/12 PHP
PHP7 字符串处理机制修改
2021/03/09 PHP
jQuery+CSS 实现的超Sexy下拉菜单
2010/01/17 Javascript
jQuery与其它库冲突的解决方法
2010/06/25 Javascript
extjs之去除s.gif的影响
2010/12/25 Javascript
js 表单提交后按钮变灰的实例代码
2013/08/16 Javascript
jquery左边浮动到一定位置时显示返回顶部按钮
2014/06/05 Javascript
Js 正则表达式知识汇总
2014/12/02 Javascript
通过JS判断联网类型和连接状态的实现代码
2015/04/01 Javascript
jQuery背景插件backstretch使用指南
2015/04/21 Javascript
prototype框架中美元符号$用法分析
2016/01/22 Javascript
ReactNative-JS 调用原生方法实例代码
2016/10/08 Javascript
深入浅析javascript继承体系
2017/10/23 Javascript
js实现简单数字变动效果
2017/11/06 Javascript
自定义PC微信扫码登录样式写法
2017/12/12 Javascript
解决vue中监听input只能输入数字及英文或者其他情况的问题
2018/08/30 Javascript
vue项目中仿element-ui弹框效果的实例代码
2019/04/22 Javascript
理解Python中的类与实例
2015/04/27 Python
Eclipse中Python开发环境搭建简单教程
2016/03/23 Python
Python脚本实现虾米网签到功能
2016/04/12 Python
Windows 64位下python3安装nltk模块
2018/09/19 Python
对python读取CT医学图像的实例详解
2019/01/24 Python
Python csv模块使用方法代码实例
2019/08/29 Python
Python闭包装饰器使用方法汇总
2020/06/29 Python
python读取excel数据绘制简单曲线图的完整步骤记录
2020/10/30 Python
HTML5的表单(绝对特别强大的功能)使用示例
2013/06/20 HTML / CSS
在使用非全零作为空指针内部表达的机器上, NULL是如何定义
2014/11/09 面试题
应届本科生推荐信范文
2013/12/25 职场文书
个人授权委托书范本
2014/04/03 职场文书
保护母亲河倡议书
2014/04/14 职场文书
公司晚会策划方案
2014/05/17 职场文书
小学运动会开幕词
2016/03/04 职场文书
SpringDataJPA实体类关系映射配置方式
2021/12/06 Java/Android