2011-10-24 40 views
1

我正在寻找一种方法来一个div中的文本自动调整至其最大尺寸。最大尺寸是可能的最大尺寸,同时仍然适合div。最大文本大小可能里面的div

我知道这是不可能做到这一点的CSS。是否可以使用JavaScript?

+0

你的意思是“自动调整文本大小?默认情况下,文本将换行到几行,并使用CSS,你可以选择隐藏和”过度“文本.. –

+0

这是一个'div'(在这种情况下,'div'一个Dashboard widget工具包含一个数字(网站的访问者占访问者总数)有数目不详的数字。因为那是小部件显示我要让数量大的可能(大小ofcourse)唯一的)。 – Boyd

回答

4

可以在纯JavaScript中使用这样的伎俩 “自动调整” 字体大小:

window.onload = function() { 
    var oDiv = document.getElementById("Div1"); 
    oDiv.style.overflow = "auto"; //for Firefox, but won't ruin for other browsers 
    var fontSize = 14; 
    var changes = 0; 
    var blnSuccess = true; 
    while (oDiv.scrollWidth <= oDiv.clientWidth) { 
     oDiv.style.fontSize = fontSize + "px"; 
     fontSize++; 
     changes++; 
     if (changes > 500) { 
      //failsafe.. 
      blnSuccess = false; 
      break; 
     } 
    } 
    if (changes > 0) { 
     //upon failure, revert to original font size: 
     if (blnSuccess) 
      fontSize -= 2; 
     else 
      fontSize -= changes; 
     oDiv.style.fontSize = fontSize + "px"; 
    } 
}; 

Live test case

开始与<div>的实际字体大小,如果你知道它,否则最好使用数量较少的第一个号码。

上述代码的工作原理是,当文本大于其容器的设置宽度时,“实际”宽度的scrollWidth属性将大于设置的宽度。

编辑:如果overflow CSS属性被设置为默认“看得见”的价值 Firefox将不会更新scrollWidth属性,因此必须将其设置为“自动” - 这个代码是干什么的你,但如果您愿意,也可以通过CSS设置它。

+0

非常感谢你!这正是我一直在你用firefox寻找! – Boyd

+0

?这似乎是在Firefox while循环是无限的,因为它说:“剧本是没有响应”。这也发生在你生活的测试用例。 – Boyd

+0

嗯..测试只能在Chrome和IE9中。现在用FF看一下现在看。 –

相关问题