Я создал вариант https://stackoverflow.com/a/17845473/189411
где вы можете установить минимальный и максимальный размер текста в зависимости от минимального и максимального размера поля, которое вы хотите «проверить». Кроме того, вы можете проверить размер элемента dom, отличный от поля, в котором вы хотите применить размер текста.
Вы изменяете размер текста от 19 до 25 пикселей в элементе # size-2 на основе ширины от 500 до 960 пикселей элемента # size-2.
resizeTextInRange(500,960,19,25,'#size-2');
Вы изменяете размер текста от 13 до 20 пикселей в элементе # size-1, исходя из ширины основного элемента от 500 до 960 пикселей.
resizeTextInRange(500,960,13,20,'#size-1','body');
полный код есть https://github.com/kiuz/sandbox-html-js-css/tree/gh-pages/text-resize-in-range-of-text-and-screen/src
function inRange (x,min,max) {
return Math.min(Math.max(x, min), max);
}
function resizeTextInRange(minW,maxW,textMinS,textMaxS, elementApply, elementCheck=0) {
if(elementCheck==0){elementCheck=elementApply;}
var ww = $(elementCheck).width();
var difW = maxW-minW;
var difT = textMaxS- textMinS;
var rapW = (ww-minW);
var out=(difT/100)*(rapW/(difW/100))+textMinS;
var normalizedOut = inRange(out, textMinS, textMaxS);
$(elementApply).css('font-size',normalizedOut+'px');
console.log(normalizedOut);
}
$(function () {
resizeTextInRange(500,960,19,25,'#size-2');
resizeTextInRange(500,960,13,20,'#size-1','body');
$(window).resize(function () {
resizeTextInRange(500,960,19,25,'#size-2');
resizeTextInRange(500,960,13,20,'#size-1','body');
});
});
<meta name="viewport" content="width=device-width" />
Также вы можете использоватьmax-width
вместоmax-device-width
для более «отзывчивого» ощущения.