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 相关文章推荐
JSF中confirm弹出框的用法示例介绍
Jan 07 Javascript
Node.js开发之访问Redis数据库教程
Jan 14 Javascript
JS控制网页动态生成任意行列数表格的方法
Mar 09 Javascript
Jquery实现遮罩层的方法
Jun 08 Javascript
jQuery中实现prop()函数控制多选框(全选,反选)
Aug 19 Javascript
angular源码学习第一篇 setupModuleLoader方法
Oct 20 Javascript
jQuery如何跳转到另一个网页 就这么简单
Dec 28 Javascript
javascript数据类型详解
Feb 07 Javascript
BootStrap模态框不垂直居中的解决方法
Oct 19 Javascript
vue 数组和对象不能直接赋值情况和解决方法(推荐)
Oct 25 Javascript
简单理解Vue中的nextTick方法
Jan 30 Javascript
微信小程序实现类似微信点击语音播放效果
Mar 30 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生成随机颜色的方法
2014/11/13 PHP
php使用ob_start()实现图片存入变量的方法
2014/11/14 PHP
PHP中使用hidef扩展代替define提高性能
2015/04/09 PHP
PHP中遇到的时区问题解决方法
2015/07/23 PHP
laravel5.5安装jwt-auth 生成token令牌的示例
2019/10/24 PHP
js function定义函数使用心得
2010/04/15 Javascript
js选取多个或单个元素的实现代码(用class)
2012/08/22 Javascript
js获取多个tagname的节点数组
2013/09/22 Javascript
js获取滚动距离的方法
2015/05/30 Javascript
chrome浏览器当表单自动填充时如何去除浏览器自动添加的默认样式
2015/10/09 Javascript
JS响应鼠标点击实现两个滑块区间拖动效果
2015/10/26 Javascript
NodeJS实现阿里大鱼短信通知发送
2016/01/17 NodeJs
分享javascript实现的冒泡排序代码并优化
2016/06/05 Javascript
解析JavaScript中的字符串类型与字符编码支持
2016/06/24 Javascript
BootStrap日期控件在模态框中选择时间下拉菜单无效的原因及解决办法(火狐下不能点击)
2016/08/18 Javascript
JS 60秒后重新发送验证码的实例讲解
2017/07/26 Javascript
JavaScript调试之console.log调试的一个小技巧分享
2017/08/07 Javascript
详解使用vuex进行菜单管理
2017/12/21 Javascript
vue-cli初始化项目中使用less的方法
2018/08/09 Javascript
vue-cli脚手架搭建的项目去除eslint验证的方法
2018/09/29 Javascript
js的各种数据类型判断的介绍
2019/01/19 Javascript
详解微信小程序文件下载--视频和图片
2019/04/24 Javascript
vue-cli3中vue.config.js配置教程详解
2019/05/29 Javascript
原生js实现的移动端可拖动进度条插件功能详解
2019/08/15 Javascript
layui checkbox默认选中,获取选中值,清空所有选中项的例子
2019/09/02 Javascript
Element Rate 评分的使用方法
2020/07/27 Javascript
python制作一个桌面便签软件
2015/08/09 Python
Python 实现数据结构-循环队列的操作方法
2019/07/17 Python
Python实现区域填充的示例代码
2021/02/03 Python
canvas简单连线动画的实现代码
2020/02/04 HTML / CSS
新闻学专业大学生职业生涯规划范文
2014/03/02 职场文书
2014高考励志标语
2014/06/05 职场文书
建筑横幅标语
2014/10/09 职场文书
2014年教育工作总结
2014/11/26 职场文书
客服专员岗位职责范本
2015/04/07 职场文书
社会实践活动总结格式
2015/05/11 职场文书