微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

一、引用 multext.js 文件

multext.js

rush:js;"> function appendMultiText(container,str,posX,posY,width,fontsize,fontfamily){
        if( arguments.length < 6){
            fontsize = 14;
        }       

        if( arguments.length < 7){
            fontfamily = "s<a href="https://www.jb51.cc/tag/ims/" target="_blank" class="keywords">ims</a>un,arial";
        }

        //<a href="https://www.jb51.cc/tag/huoqu/" target="_blank" class="keywords">获取</a>分割后的字符串
        var strs = splitByLine(str,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<str.length;i++){
                var code = str.charCodeAt(i);
                var pixelLen = code > 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 的库:

rush:xhtml;">

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐