如何检测文本是否溢出?例如,下面的文本比它的 div 容器允许的要长。如何在javascript中检测到这一点?
<div style="max-width: 100px; white-space:nowrap; overflow: hidden;">
Lorem ipsum dolor sit amet, consectetur adipisicing elit
</div>
如何检测文本是否溢出?例如,下面的文本比它的 div 容器允许的要长。如何在javascript中检测到这一点?
<div style="max-width: 100px; white-space:nowrap; overflow: hidden;">
Lorem ipsum dolor sit amet, consectetur adipisicing elit
</div>
如果您使用 jQuery,您可以尝试将 div 的宽度与其滚动宽度进行比较。
if ($('#div-id')[0].scrollWidth > $('#div-id').innerWidth()) {
//Text has over-flown
}
您可以在显示元素之前检测文本是否适合。所以你可以使用这个不需要元素在屏幕上的函数。
function textWidth(text, fontProp) {
var tag = document.createElement('div')
tag.style.position = 'absolute'
tag.style.left = '-99in'
tag.style.whiteSpace = 'nowrap'
tag.style.font = fontProp
tag.innerHTML = text
document.body.appendChild(tag)
var result = tag.clientWidth
document.body.removeChild(tag)
return result;
}
用法:
if (textWidth('Text', 'bold 13px Verdana') > elementWidth) {
...
}
用于检查文本是否溢出的 jQuery 插件,写得不是很好,但可以正常工作。发布此信息是因为我在任何地方都没有找到适用于此的插件。
jQuery.fn.hasOverflown = function () {
var res;
var cont = $('<div>'+this.text()+'</div>').css("display", "table")
.css("z-index", "-1").css("position", "absolute")
.css("font-family", this.css("font-family"))
.css("font-size", this.css("font-size"))
.css("font-weight", this.css("font-weight")).appendTo('body');
res = (cont.width()>this.width());
cont.remove();
return res;
}
出于说明目的,假设您的 div 有id="d"
,那么您可以这样做:
var d = document.getElementById('d'),
dWider;
d.style.maxWidth = '9999em';
d.style.overflow = 'visible';
dWider = d.offsetWidth > 100;
d.style.maxWidth = '100px';
d.style.overflow = 'hidden';
dWider
如果文本溢出,则 var将为 true,否则为 false。