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 相关文章推荐
js通过八个点 拖动改变div大小的实现方法
Mar 05 Javascript
js实现进度条的方法
Feb 13 Javascript
javascript中indexOf技术详解
May 07 Javascript
JQuery中clone方法复制节点
May 18 Javascript
jquery实现带缩略图的全屏图片画廊效果实例
Jun 25 Javascript
手机端 HTML5使用photoswipe.js仿微信朋友圈图片放大效果
Aug 25 Javascript
详解Vue监听数据变化原理
Mar 08 Javascript
微信小程序 实现列表项滑动显示删除按钮的功能
Apr 13 Javascript
浅谈js获取ModelAndView值的问题
Mar 28 Javascript
JS将时间秒转换成天小时分钟秒的字符串
Jul 10 Javascript
angula中使用iframe点击后不执行变更检测的问题
May 10 Javascript
JavaScript实现雪花飘落效果
Dec 27 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/03/23 PHP
php+mysqli实现将数据库中一张表信息打印到表格里的方法
2015/01/28 PHP
PHP使用Redis替代文件存储Session的方法
2017/02/15 PHP
实现laravel 插入操作日志到数据库的方法
2019/10/11 PHP
JQuery Ajax 跨域访问的解决方案
2010/03/12 Javascript
javascript 广告后加载,加载完页面再加载广告
2010/11/25 Javascript
javascript使用prototype完成单继承
2014/12/24 Javascript
JS实现线性表的链式表示方法示例【经典数据结构】
2017/04/11 Javascript
js轮播图透明度切换(带上下页和底部圆点切换)
2017/04/27 Javascript
r.js来合并压缩css文件的示例
2018/04/26 Javascript
vue-baidu-map 进入页面自动定位的解决方案(推荐)
2018/04/28 Javascript
在angular 6中使用 less 的实例代码
2018/05/13 Javascript
利用chrome浏览器进行js调试并找出元素绑定的点击事件详解
2021/01/30 Javascript
在Vue-cli里应用Vuex的state和mutations方法
2018/09/16 Javascript
Javascript实现秒表倒计时功能
2018/11/17 Javascript
JS实现吸顶特效
2020/01/08 Javascript
实践Python的爬虫框架Scrapy来抓取豆瓣电影TOP250
2016/01/20 Python
python对象及面向对象技术详解
2016/07/19 Python
Django 中使用流响应处理视频的方法
2018/07/20 Python
在scrapy中使用phantomJS实现异步爬取的方法
2018/12/17 Python
selenium+python自动化测试之环境搭建
2019/01/23 Python
python版DDOS攻击脚本
2019/06/12 Python
python pickle存储、读取大数据量列表、字典数据的方法
2019/07/07 Python
python实现简易学生信息管理系统
2020/04/05 Python
通过代码实例了解Python异常本质
2020/09/16 Python
美国嘻哈首饰购物网站:Hip Hop Bling
2016/12/30 全球购物
俄罗斯购买内衣网站:Trusiki
2020/08/22 全球购物
经济与贸易专业应届生求职信
2013/11/19 职场文书
党员自我评价分享
2013/12/13 职场文书
运动会通讯稿150字
2014/02/15 职场文书
国家励志奖学金个人先进事迹材料
2014/05/04 职场文书
停车场管理协议书范本
2014/10/08 职场文书
总经理2015中秋节致辞
2015/07/29 职场文书
Python爬虫基础讲解之请求
2021/05/13 Python
虚拟机linux端mysql数据库无法远程访问的解决办法
2021/05/26 MySQL
详细聊聊vue中组件的props属性
2021/11/02 Vue.js