JS获取文本在HTML中的真实长度

9 篇文章 0 订阅
4 篇文章 0 订阅

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

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

根据[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消失了。


本文测试源代码:

<html>
<head>
</head>

<body>
	
	<div>
		<input id="btn" type="button" value="hello html truncation issue" style="width:150px"></input>
	</div>
	
	<script type="text/javascript" src="http://libs.baidu.com/jquery/2.0.0/jquery.min.js"></script>
	<script type="text/javascript">
	String.prototype.width = function(font) {
		var f = font || '12px arial',
		o = $('<div>' + this + '</div>')
            .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));
	});
	</script>
</body>
</html>



参考:

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



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值