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学习总结(超级详细)
Sep 04 Javascript
js中confirm实现执行操作前弹出确认框的方法
Nov 01 Javascript
HTML中setCapture、releaseCapture 使用方法浅析
Sep 25 Javascript
Angular的MVC和作用域
Dec 26 Javascript
jquery对table做排序操作的实例演示
Aug 10 jQuery
vue 1.x 交互实现仿百度下拉列表示例
Oct 21 Javascript
javascript trie前缀树的示例
Jan 29 Javascript
vue自定v-model实现表单数据双向绑定问题
Sep 03 Javascript
nuxt.js中间件实现拦截权限判断的方法
Nov 21 Javascript
vue+SSM实现验证码功能
Dec 07 Javascript
Vue唯一可以更改vuex实例中state数据状态的属性对象Mutation的讲解
Jan 18 Javascript
jquery+php后台实现省市区联动功能示例
May 23 jQuery
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 Mssql操作简单封装支持存储过程
2009/12/11 PHP
php中inlcude()性能对比详解
2012/09/16 PHP
PHP数字字符串左侧补0、字符串填充和自动补齐的几种方法
2014/05/10 PHP
PHP合并数组函数array_merge用法分析
2017/02/17 PHP
List the UTC Time on a Computer
2007/06/11 Javascript
jquery 表单进行客户端验证demo
2009/08/24 Javascript
jquery 仿QQ校友的DIV模拟窗口效果源码
2010/03/24 Javascript
JS实现的相册图片左右滚动完整实例
2016/11/23 Javascript
jQuery阻止移动端遮罩层后页面滚动
2017/03/15 Javascript
简单的Vue SSR的示例代码
2018/01/12 Javascript
简单理解Vue中的nextTick方法
2018/01/30 Javascript
深入理解Vue router的部分高级用法
2018/08/15 Javascript
vue上传图片到oss的方法示例(图片带有删除功能)
2018/09/27 Javascript
Vue + Element UI图片上传控件使用详解
2019/08/20 Javascript
vant组件中 dialog的确认按钮的回调事件操作
2020/11/04 Javascript
浅谈python中scipy.misc.logsumexp函数的运用场景
2016/06/23 Python
利用Python实现手机短信监控通知的方法
2019/07/22 Python
django的model操作汇整详解
2019/07/26 Python
python修改文件内容的3种方法详解
2019/11/15 Python
Python基于Socket实现简单聊天室
2020/02/17 Python
Jupyter Notebook折叠输出的内容实例
2020/04/22 Python
python selenium xpath定位操作
2020/09/01 Python
浅谈anaconda python 版本对应关系
2020/10/07 Python
python drf各类组件的用法和作用
2021/01/12 Python
Django扫码抽奖平台的配置过程详解
2021/01/14 Python
瑞典灯具和照明网上商店:Lamp24.se
2018/03/17 全球购物
德国价格合理的品牌商品购物网站:averdo
2019/03/21 全球购物
Schecker荷兰:狗狗用品和配件
2019/06/06 全球购物
英国美术用品购物网站:Cass Art
2019/10/08 全球购物
小学毕业典礼主持词
2014/03/27 职场文书
银行竞聘演讲稿范文
2014/04/23 职场文书
政治学专业毕业生求职信
2014/08/11 职场文书
社区务虚会发言材料
2014/10/20 职场文书
领导离职感言
2015/08/03 职场文书
Python机器学习三大件之一numpy
2021/05/10 Python
Java9新特性对HTTP2协议支持与非阻塞HTTP API
2022/03/16 Java/Android