三种方法 计算 文本宽度 及 文本行数

1.已有元素,获取元素内文本行数

//计算元素内的行数
var line=parseFloat(el.css("height"))/parseFloat(el.css("line-height"));

2.canvas计算文本宽度、行数
注:不同字体、不同尺寸 的文字占用宽度不同

//txt:文字  font:字体  width:一行最大宽度
//计算宽度
function getwidth(txt,font){
  var canvas = document.createElement('canvas');
  var ctx=canvas.getContext("2d");
  ctx.font=font;
  return ctx.measureText(txt).width
}
//计算行数
function textline(txt,font,width){
  let txts=txt.split("\n");
  let line=0;
  for(var key in txts){
     line += Math.ceil(this.getwidth(txts[key],font)/width);
  }
  return line;
}

3.粗略计算字符宽度,行数计算同上
正则匹配中文占1个字符宽度,其他(如:英文)占0.5个字符宽度

  //text:文字 , font_size:字体大小number , letter_space:字间距number 
  function getwidth(text,font_size,letter_space){
    let cn = text.match(/[\u2E80-\uFE4F\u3002\uff1b\uff0c\uff1a\u201c\u201d\uff08\uff09\u3001\uff1f\u300a\u300b]/ig);
    let cn_count = cn?cn.length:0
    let other_count = text.length - cn_count;
    return (cn_count + other_count / 2)*font_size + (letter_space||0)*text.length
  }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

夜雨风亭

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值