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 相关文章推荐
Javascript 实现TreeView CheckBox全选效果
Jan 11 Javascript
Jquery + Ajax调用webService实例代码(asp.net)
Aug 27 Javascript
jquery.cookie.js 操作cookie实现记住密码功能的实现代码
Apr 27 Javascript
JS对select控件option选项的增删改查示例代码
Oct 21 Javascript
js判断浏览器是否支持html5
Aug 17 Javascript
简化版手机端照片预览组件
Apr 13 Javascript
完美实现八种js焦点轮播图(下篇)
Apr 20 Javascript
vue-router路由简单案例介绍
Feb 21 Javascript
Angular实现双向折叠列表组件的示例代码
Nov 21 Javascript
vue elementUI 表单校验功能之数组多层嵌套
Jun 04 Javascript
Node.js API详解之 util模块用法实例分析
May 09 Javascript
使用Vue-scroller页面input框不能触发滑动的问题及解决方法
Aug 08 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数组 为文章加关键字连接 文章内容自动加链接
2011/12/29 PHP
深入分析php之面向对象
2013/05/15 PHP
php利用新浪接口查询ip获取地理位置示例
2014/01/20 PHP
PHP中文乱码解决方案
2015/03/05 PHP
PHP面向对象程序设计组合模式与装饰模式详解
2016/12/02 PHP
PHP基于socket实现的简单客户端和服务端通讯功能示例
2017/07/10 PHP
php查看一个变量的占用内存的实例代码
2020/03/29 PHP
THREE.JS入门教程(3)着色器-下
2013/01/24 Javascript
js 采用delete实现继承示例代码
2014/05/20 Javascript
js中confirm实现执行操作前弹出确认框的方法
2014/11/01 Javascript
js Calender控件使用详解
2015/01/05 Javascript
jQuery基于扩展简单实现倒计时功能的方法
2016/05/14 Javascript
web 屏蔽BackSpace键实例代码
2016/12/24 Javascript
Vue实现固定定位图标滑动隐藏效果
2019/05/30 Javascript
Emberjs 通过 axios 下载文件的方法
2019/09/03 Javascript
JavaScript实现简单验证码
2020/08/24 Javascript
解决await在forEach中不起作用的问题
2021/02/25 Javascript
Python 文件操作技巧(File operation) 实例代码分析
2008/08/11 Python
Python设计模式之工厂模式简单示例
2018/01/09 Python
浅析Python pandas模块输出每行中间省略号问题
2018/07/03 Python
Python3字符串encode与decode的讲解
2019/04/02 Python
Python3 合并二叉树的实现
2019/09/30 Python
关于TensorFlow新旧版本函数接口变化详解
2020/02/10 Python
python代码实现图书管理系统
2020/11/30 Python
html5中的input新属性range使用记录
2014/09/05 HTML / CSS
基于HTML5实现类似微信手机摇一摇功能(计算摇动次数)
2017/07/24 HTML / CSS
HTML5页面嵌入小程序没有返回按钮及返回页面空白的问题
2020/05/28 HTML / CSS
意大利领先的奢侈品在线时装零售商:MCLABELS
2020/10/13 全球购物
计算机专业职业规划
2014/02/28 职场文书
公务员更新知识培训实施方案
2014/03/31 职场文书
工伤事故赔偿协议书
2014/04/15 职场文书
法制宣传月活动总结
2014/04/29 职场文书
2016年第32个教师节致辞
2015/11/26 职场文书
趣味运动会口号
2015/12/24 职场文书
Python - 10行代码集2000张美女图
2021/05/23 Python
JS数组去重详情
2021/11/07 Javascript