D3.js封装文本实现自动换行和旋转平移等功能

2022-01-14站长百科252091

之前小编和大家分享了SVG中如何配合使用text和tspan来实现换行的功能,所以这篇文章对此功能进行一下封装,以后就可以直接用了。有需要的朋友们可以参考借鉴,下面来一起看看吧。

我们下面话不多说,本文主要介绍的是利用D3.js封装文本实现自动换行功能的步骤,下面来一起看看吧。

一、引用 multext.js 文件

multext.js

 function appendMultiText(container, str, posX, posY, width, fontsize, fontfamily){ if( arguments.length <6){ fontsize = 14; } if( arguments.length <7){ fontfamily = "simsun, arial"; } //获取分割后的字符串 var strs = splitByLine(str,width,fontsize); var mulText = container.append("text") .attr("x",posX) .attr("y",posY) .style("font-size",fontsize) .style("font-family",fontfamily); mulText.selectAll("tspan") .data(strs) .enter() .append("tspan") .attr("x",mulText.attr("x")) .attr("dy","1em") .text(function(d){ return d; }); return mulText; function splitByLine(str,max,fontsize){ var curLen = 0; var result = []; var start = 0, end = 0; for(var i=0;i 255 ? fontsize : fontsize/2; curLen += pixelLen; if(curLen > max){ end = i; result.push(str.substring(start,end)); start = i; curLen = pixelLen; } if( i === str.length - 1 ){ end = i; result.push(str.substring(start,end+1)); } } return result; } }

可以另存为后,在

当然,要使用此文件,同时要引用 d3 的库:

 

二、函数的参数

文件里只实现了一个函数 appendMultiText() ,其各参数的意义为:

 appendMultiText( container,     //文本的容器,可以是或 str,        //字符串 posX,        //文本的x坐标 posY,        //文本的y坐标 width,       //每一行的宽度,单位为像素 fontsize,      //文字的大小(可省略),默认为 14 fontfamily     //文字的字体(可省略),默认为 simsun, arial ) 

三、添加多行文本

下面添加多行文本试试。首先要添加元素:

 var width = 300; var height = 300; var svg = d3.select("body") .append("svg") .attr("width",width) .attr("height",height); 

添加的元素,保存在变量 svg 中,这个变量要作为 appendMultiText 的参数使用。

接下来添加多行文本:

 var str = "青青子衿,悠悠我心,但为君故,沉吟至今。"; appendMultiText(svg,str,30,100,120,20,"simsun"); 

代码的意思为:在 svg 容器里的坐标(30, 100)处添加指定字符串,每一行的长度为120个像素,超出的部分自动换行,字体大小为20,字体为宋体。

结果如下:

可以看到,添加了四行文字,每行的长度为120个像素。appendMultiText自动为我们添加了
appendMultiText()的返回值是被添加的元素的选择集,可以用一个变量保存此值,再做旋转平移之类的操作,当然也可更改字体等,例如:

 var str = "青青子衿,悠悠我心,但为君故,沉吟至今。"; var multext = appendMultiText(svg,str,30,100,120,20,"simsun"); multext.attr("transform","rotate(-20)"); 

文本逆时针旋转20度。

你还可以将文本放到元素里。

 var g = svg.append("g"); var multext = appendMultiText(g,str,30,100,120); 

如此,多行文本的所有元素会置于之下。上面这段代码的 appendMultiText() 省略了最后两个参数,如果省略,默认字体大小为 14px ,字体为 simsun, arial。

总结

以上就是利用D3.js封装文本实现自动换行功能的全部内容,希望这篇文章的内容对大家学习或者使用D3.js能有所帮助,如果有疑问大家可以留言交流。

以上就是D3.js封装文本实现自动换行和旋转平移等功能的详细内容,更多请关注本站其它相关文章!

本文地址:https://www.ufcn.cn/article/539583.html

如非特殊说明,本站内容均来自于网友自主分享,概不代表本站观点,如有任何问题我们都将在收到反馈后的第一时间进行处理!

  • C++ 类和对象基础详解:从封装理解对象生命周期
    07月 13 2026

    这篇文章给大家介绍C++ 类和对象基础详解:从封装理解对象生命周期,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧 目录前言一、类到底在解决什么问题二、类的定义、访问限定符和封装三、对象、成员函数和this指针四、对象大小和内存对齐五、默认成员函数是什么六、构造函数:让对象一出生就是可用的七、析构函数:对象结束前清理资源八、拷贝构造:新对象用旧对...

  • 苹果 Apple Pencil 新专利获批:“预见”手写笔姿态,支持旋转交互
    07月 11 2026

    7 月 9 日消息,科技媒体 PatentlyApple 今天(7 月 9 日)发布博文,报道称苹果公司获批一项 Apple Pencil 相关的技术专利,有望在数字绘画和手写输入体验,改善手写笔和 iPad 屏幕的交互体验。苹果公司在专利中指出,在不同角度下,数字画笔(铅笔、马克笔、画笔或荧光笔等)的表现存在差异,而且倾斜、滚动、距离和工具方向都会改变最终笔触的形状、不透明度、宽度、方向或纹理。...

  • TCL 科技:玻璃基封装技术尚处前期调研阶段,商业化存不确定性
    07月 07 2026

    7 月 6 日消息,TCL 科技今日在互动平台表示,公司目前对玻璃基封装领域尚处于前期调研与技术预研阶段。公司于该领域能否技术落地与实现商业化量产仍存在重大不确定性,对公司现有经营业绩无明显影响,敬请投资者关注相关技术风险,理性看待行业题材热度。注意到,TCL 科技虽然未在公司公告中披露玻璃基封装领域进展,但其旗下天津普林在玻璃基封装领域的研究布局其实可以追溯到更早。天津普林 2024 年年报显示...

  • AMD 发布 MoP 封装版 Versal Premium Gen 2 自适应 SoC,集成内存
    07月 01 2026

    感谢网友 不一样的体验 的线索投递! 6 月 30 日消息,AMD 当地时间今日公布 MoP 封装版本的 Versal Premium Gen 2 自适应 SoC,为这款功能丰富的高端通用型 SoC 提供了至高 32GB 的集成 LPDDR5X 内存。AMD 表示 MoP 封装可降低至多 60% 的 PCB 面积占用;同时内存传输速率也能从标准版的 8533MT/s 提升到 9000MT/s,提供...

  • 消息称苹果 iPhone 18 Pro 性能 / 散热大升级:不再是双层主板夹 SoC、A20 Pro 有望采用 WMCM 封装
    07月 01 2026

    感谢网友 Autumn_Dream、Keane0 的线索投递! 6 月 30 日消息,博主 @数码闲聊站 援引苹果 iPhone 18 Pro 系列手机泄露视频,透露今年系列手机不再是双层主板夹 SoC,在散热方面迎来大升级;同时 A20 Pro 芯片“疑似是 WMCM 封装”,可令系列手机性能体验迎来明显升级。除此之外,该博主还在评论区透露 iPhone 18 Pro 系列手机摄像头传感器升级不...

  • 上海超硅 12 英寸方形硅片顺利量产并交付客户,应用于 AI 芯片下一代 CoPoS 封装工艺
    06月 22 2026

    6 月 22 日消息,超硅股份今日宣布,5 月,上海超硅正式向大客户量产交付方形硅片产品,应用于人工智能 HPC 芯片的下一代 CoPoS 先进封装工艺平台。据官方介绍,随着人工智能 HPC 芯片的性能快速提升,单个芯片的尺寸进一步扩张,传统 300mm 圆形晶圆在此场景下将面临利用率不足并产生大量边缘废料等挑战。方形硅片在可利用面积、高平坦度、低翘曲等方面参数更优,契合 CoPoS 封装工艺要求...

  • 台积电加速研发 CoPoS 封装以取代 CoWoS:玻璃核心基板可降低 30% 成本并将晶圆利用率提升至 90% 以上
    06月 21 2026

    感谢北冥有鱼网友 不一样的体验、华南吴彦祖 的线索投递! 北冥有鱼 6 月 21 日消息,随着玻璃核心基板成为行业核心方案,台积电正全力研发面板级封装技术 CoPoS,用以替代现有 CoWoS 工艺,应对持续增长的算力需求。北冥有鱼注意到,人工智能与算力需求持续暴涨,市场亟需新一代先进封装技术。英特尔与台积电均在全力攻关相关方案,而玻璃核心基板将成为双方技术路线中的核心一环。据台湾地区《工商时报》...

  • 任天堂向初代 Switch 游戏机推送 22.5.0 固件更新,eShop 商店从网页封装升级为原生应用
    06月 19 2026

    感谢北冥有鱼网友 补药吖、不一样的体验、x0oo0_0oo0x 的线索投递! 北冥有鱼 6 月 18 日消息,任天堂现已向旗下初代 Switch 游戏机推送 22.5.0 固件版本更新,本次更新主要将 eShop 商店从网页封装应用升级为原生应用,从而改进了备受玩家诟病的加载缓慢问题。事实上,任天堂在 Switch 2 发布时,便将其系统中的 eShop 商店悄悄调整为原生应用,从而大幅改善商店加...

  • 英特尔任命李锡熙为代工执行副总裁,强化 AI 芯片先进封装等
    06月 19 2026

    北冥有鱼 6 月 19 日消息,英特尔昨日(6 月 18 日)发布公告,宣布任命李锡熙(Seok-Hee Lee)为英特尔代工执行副总裁,直接向 CEO 陈立武(Lip-Bu Tan)汇报,强化 AI 计算能力。李锡熙将全面负责先进封装、系统集成、后端技术开发与后端制造业务,从而提升英特尔为客户提供差异化系统级创新的能力。英特尔 CEO 陈立武表示:先进封装和系统集成正成为下一代计算系统的关键能力...

  • Python封装_下划线_命名的完全指南
    06月 18 2026

    在Python中,变量和方法名前的下划线有特定含义,这属于Python的命名约定(naming convention)和名称修饰(name mangling)机制,本文给大家详细介绍了Python封装_下划线_命名的完全指南,需要的朋友可以参考下 目录一、基本概念(官方定义)二、通俗易懂的类比三、实际代码演示单下划线_:建议性的私有双下划线__:名称修饰机制四、继承中的区别(关键点)五、Pytho...