我有以下函数来计算文本的最大尺寸:文字大小与换行
function MyFitText(width, height, text)
{
var ourText = $('span').css('font-weight', 'bold').text(text);
var fontSize = 20;
ourText.css('font-size', fontSize);
do {
fontSize = fontSize - 1;
textHeight = ourText.height();
textWidth = ourText.width();
ourText.css('font-size', fontSize);
} while ((textHeight > height || textWidth > width) && fontSize > 1);
return fontSize;
}
它为单行文本,但如何计算呢2个多行?在Chrome中的调试器说:
所以,换行符存在,但它计算像它的单行文本。
MODIFY
我已经通过以下方式修改了功能(感谢gaetanoM):
function MyFitText(width, height, text)
{
var ourTextArr = [];
var texts = text.split('\n');
var fontSize = 20;
$.each(texts, function (index, value) {
if (value != '') {
var ourText = $('span').css('font-weight', 'bold').text(value);
ourText.css('font-size', fontSize);
ourTextArr.push(ourText);
}
});
do{
fontSize = fontSize - 1;
var textHeight = 0;
var textWidth = 0;
$.each(ourTextArr, function(index, value) {
textHeight += value.height();
if (value.width() > textWidth)
textWidth = value.width();
value.css('font-size', fontSize);
});
}
while ((textHeight > height || textWidth > width) && fontSize > 1);
return fontSize;
}
value.width()当字体大小被改变正在被改变,但值。 height()始终保持不变。为什么?
我不理解它如何工作???这行** $('span').css('font-weight','bold')。text(text)**返回一个空的jQuery对象,而你的** textWidth **总是为空。您可以测试打印ourText.length。无论如何,如果你的代码工作,你可能总是用text.split('\ n')分割文本,并在结果数组上应用forEach循环。 – gaetanoM