나는 고정 된 크기의 html div와 텍스트를 입력하는 데 사용되는 추가 HTML 입력 상자가 있습니다. 이 텍스트는 div에 표시됩니다.텍스트 크기를 조정하는 순수 자바 스크립트
텍스트를 항상 중앙에 배치하고 문자열의 문자 수에 대해 가능한 가장 큰 크기가되도록하고 싶습니다.
나는 작동하는 프로토 타입을 만들었지 만 너무 잘 작동하지 않습니다. 텍스트 크기가 항상 정확하지는 않습니다.
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);
}
}
}
보다 일관된 결과를 얻으려면 더 훌륭한 해결책이 있습니까? 당신은 실제로 오른쪽 크기가 될 때까지 텍스트의 font-size
을 수정하는 시행 착오 알고리즘을 만들 수 사전
이 작업을 수행하기 위해 CSS에서'text-align = center'를 사용하지 마십시오 ?? – jbabey
을 시작하면 변수에'textStr.length'를 저장하고 그 변수를 바꿀 수 있으므로 매번 길이를 확인하지 않습니다 (또한 'DRY'도 가능). 그리고'else if' 또는'switch-cases'를 사용하여 if가 이미 true로 평가 되더라도 if가 계속 실행되지 않도록합니다. – ajax333221