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 相关文章推荐
解放web程序员的输入验证
Oct 06 Javascript
javascript的onchange事件与jQuery的change()方法比较
Sep 28 Javascript
json 入门基础教程 推荐
Oct 31 Javascript
javascript抖动元素的小例子
Oct 28 Javascript
javascript通过className来获取元素的简单示例代码
Jan 10 Javascript
jQuery trigger()方法用法介绍
Jan 13 Javascript
Ionic快速安装教程
Jun 03 Javascript
js记录点击某个按钮的次数-刷新次数为初始状态的实例
Feb 15 Javascript
浅谈vue-cli加载不到dev-server.js的解决办法
Nov 24 Javascript
详解vuex的简单todolist例子
Jul 14 Javascript
layui 实现自动选择radio单选框(checked)的方法
Sep 03 Javascript
详解Vue template 如何支持多个根结点
Feb 10 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添加MySQL数据记录代码
2008/06/07 PHP
php中对2个数组相加的函数
2011/06/24 PHP
Linux(CentOS)下PHP扩展PDO编译安装的方法
2016/04/07 PHP
thinkphp5框架前后端分离项目实现分页功能的方法分析
2019/10/08 PHP
tp5.1框架数据库子查询操作实例分析
2020/05/26 PHP
JQuery 解析多维的Json数据格式
2009/11/02 Javascript
商城常用滚动的焦点图效果代码简单实用
2013/03/28 Javascript
javascript实现颜色渐变的方法
2013/10/30 Javascript
javascript常用代码段搜集
2014/12/04 Javascript
jquery ajax分页插件的简单实现
2016/01/27 Javascript
Web前端新人笔记之jquery入门心得(新手必看)
2016/05/17 Javascript
D3.js实现折线图的方法详解
2016/09/21 Javascript
值得学习的bootstrap fileinput文件上传工具
2016/11/08 Javascript
jquery css实现邮箱自动补全
2016/11/14 Javascript
Bootstrap源码解读媒体对象、列表组和面板(10)
2016/12/26 Javascript
输入框点击时边框变色效果的实现方法
2016/12/26 Javascript
BootStrap模态框和select2合用时input无法获取焦点的解决方法
2017/09/01 Javascript
在vscode中统一vue编码风格的方法
2018/02/22 Javascript
JS高级技巧(简洁版)
2018/07/29 Javascript
vue登录页面cookie的使用及页面跳转代码
2019/07/10 Javascript
Python学习笔记之os模块使用总结
2014/11/03 Python
Python实现Pig Latin小游戏实例代码
2018/02/02 Python
使用CodeMirror实现Python3在线编辑器的示例代码
2019/01/14 Python
在Python文件中指定Python解释器的方法
2019/02/18 Python
Django 对IP访问频率进行限制的例子
2019/08/30 Python
Python Numpy 自然数填充数组的实现
2019/11/28 Python
Python调用C/C++的方法解析
2020/08/05 Python
Python实现上下文管理器的方法
2020/08/07 Python
使用HTML5做个画图板的方法介绍
2013/05/03 HTML / CSS
英国优质鞋类专家:Robinson’s Shoes
2017/12/08 全球购物
学校师德承诺书
2014/05/23 职场文书
廉洁校园实施方案
2014/05/25 职场文书
住宿生擅自离校检讨书
2014/09/22 职场文书
交心谈心活动总结
2015/05/11 职场文书
学校2016年全国助残日活动总结
2016/04/01 职场文书
「回转企鹅罐」10周年纪念展「輪るピングドラム展」海报公开
2022/03/22 日漫