Я понимаю, что на этот вопрос, похоже, ответили довольно тщательно, но были некоторые случаи, когда решения здесь могли бы вызвать другие проблемы.Например, библиотека tkahn выглядела очень полезной, но она изменила отображение элемента, к которому она была прикреплена, что может оказаться проблемой.В моем случае это помешало мне центрировать текст как по вертикали, так и по горизонтали.После некоторого возни и экспериментов я придумал простой метод, включающий jQuery, чтобы разместить текст в одну строку без необходимости изменять какие-либо атрибуты родительского элемента.Обратите внимание, что в этом коде я использовал предложение Роберта Коритника для оптимизации цикла while.Чтобы использовать этот код, просто добавьте класс "font_fix" к любым элементам div, содержащим текст, который необходимо разместить в одной строке.Для заголовка это может потребовать дополнительного div вокруг заголовка.Затем либо вызовите эту функцию один раз для div с фиксированным размером, либо установите для него прослушиватель изменения размера и / или ориентации для различных размеров.
function fixFontSize(minimumSize){
var x = document.getElementsByClassName("font_fix");
for(var i = 0; i < x.length; i++){
x[i].innerHTML = '<div class="font_fix_inner" style="white-space: nowrap; display: inline-block;">' + x[i].innerHTML + '</div>';
var y = x[i].getElementsByClassName("font_fix_inner")[0];
var size = parseInt($("#" + x[i].id).css("font-size"));
size *= x[i].clientWidth / y.clientWidth;
while(y.clientWidth > x[i].clientWidth){
size--;
if(size <= minimumSize){
size = minimumSize;
y.style.maxWidth = "100%";
y.style.overflow = "hidden";
y.style.textOverflow = "ellipsis";
$("#" + x[i].id).css("font-size", size + "px");
break;
}
$("#" + x[i].id).css("font-size", size + "px");
}
}
}
Теперь я добавил дополнительный случай, когда текстотрубается, если он становится слишком маленьким (ниже минимального порога, переданного в функцию) для удобстваЕще одна вещь, которая происходит после достижения этого порога, который может или не может быть желательным, - это изменение максимальной ширины до 100%.Это должно быть изменено для каждого сценария пользователя.Наконец, вся цель публикации этого ответа как альтернативы заключается в его способности центрировать контент внутри родительского div.Это легко сделать, добавив атрибуты css во внутренний класс div следующим образом:
.font_fix_inner {
position: relative;
float: center;
top: 50%;
-webkit-transform: translateY(-50%);
transform: translateY(-50%);
}
Надеюсь, это кому-то помогло!