追加html怎么获取长度,JS获取文本在HTML中的真实长度

当控件内字符串大小 超过 控件字符显示区域 大小,就发生了truncation。

表现在Web应用中,就是HTML中的某个元素(控件)与元素value(字符)的大小不符,如下图所示。

0818b9ca8b590ca3270a3433284dd417.png

根据[1]中给出的方法,可以得到文本的宽度。它是将文本构造成一个带hidden属性的div,然后获取其CSS属性来得到宽度的。

这里比较关键的就是获取浏览器默认font属性的方法。要注意不同浏览器中不同元素的默认font是不一样的,chrome下input元素的默认font-size是13.3333px,默认font-family是Arial。而div元素的默认font-size是16px,默认font-family是Times New Roman。可以用jQuery得到这些参数:

$('input').css('font-size');

$('input').css('font-family');为了测试[1]中的方法检测的准不准,在Chrome中将input元素的字符宽度调整为检测值152px后,input元素的truncation消失了。

0818b9ca8b590ca3270a3433284dd417.png

本文测试源代码:

String.prototype.width = function(font) {

var f = font || '12px arial',

o = $('

' + this + '
')

.css({'position': 'absolute', 'float': 'left', 'white-space': 'nowrap', 'visibility': 'hidden', 'font': f})

.appendTo($('body')),

w = o.width();

o.remove();

return w;

}

$(document).ready(function(){

ele = document.getElementById('btn');

//get input element default font properties

ele_font_size = $('input').css('font-size');

ele_font_family = $('input').css('font-family');

console.log("hello html truncation issue".width( ele_font_size + " " + ele_font_family));

});

参考:

[1] http://stackoverflow.com/questions/118241/calculate-text-width-with-javascript/21015393#21015393

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值