を破りますか? Chromeのデバッガでは次のように書かれています。 文字サイズは、私は、テキストの最大サイズを計算するには、次の機能を持っている
だから、改行が存在しますが、1行のテキストのように計算されます。
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()は常に同じままです。どうして?
:代わりに、測定した高さが所定の高さ以下になるまで、フォントサイズを小さく、その後、所定の幅にdiv要素の幅を設定この行** $( 'span').css( 'font-weight'、 'bold')。text(text)**は空のjQueryオブジェクトを返します。** textWidth **は常にnullです。 yourText.lengthをテストしてテストできます。いずれにしても、コードが動作する場合は、text.split( '\ n')でテキストを分割し、結果の配列にforEachループを適用できます。 – gaetanoM