我有一个固定大小的html div和一个用于输入文本的额外HTML输入框。该文本然后显示在div中。调整文本大小的纯Javascript算法
我希望文本始终居中并始终是字符串中字符数的最大可能大小。
我已经想出了一个工作原型,但它不太适用。文字并不总是正确的大小。
function bindText(readElement, writeElement, extra){
//the text from the input form triggered by onkeyup event
var textStr = document.getElementById(readElement).value;
//the div to write the text to
var element = document.getElementById(writeElement);
//the major part of the function that I have just brute forced to try and work out
if(textStr.length > 0){
//check the length of the string
if(textStr.length > 8 && textStr.length < 12){
//set a the font size accordingly
element.style.fontSize = 150;
}
//same again
if(textStr.length >= 12 && textStr.length < 16){
element.style.fontSize = 120;
}
if(textStr.length >= 16 && textStr.length < 20){
element.style.fontSize = 100;
}
if(textStr.length >= 20 && textStr.length < 25){
element.style.fontSize = 80;
}
if(textStr.length >= 25 && textStr.length < 32){
element.style.fontSize = 55;
}
if(textStr.length >= 32 && textStr.length < 40){
element.style.fontSize = 50;
}
if(textStr.length >= 40 && textStr.length < 50){
element.style.fontSize = 45;
}
if(textStr.length >= 76){
element = textStr.splice(0, 75);
}
}
}
有没有更优雅的解决方案来获得更一致的结果。
在此先感谢
你不能在CSS中使用'text-align = center'来实现这个? – jbabey 2012-08-15 17:28:20
作为开始,您可以将'textStr.length'存储在一个变量中,并用它替换它们,这样您就不必每次都检查长度(也可以“干”)。还可以使用'else if'或'switch-cases',这样ifs即使已经评估为真,也不会继续执行。 – ajax333221 2012-08-15 17:37:35