Stworzyłem wariant https://stackoverflow.com/a/17845473/189411
gdzie możesz ustawić minimalny i maksymalny rozmiar tekstu w stosunku do minimalnego i maksymalnego rozmiaru pola, które chcesz "sprawdzić". Ponadto możesz sprawdzić rozmiar elementu dom inny niż pole, w którym chcesz zastosować rozmiar tekstu.
Zmieniasz rozmiar tekstu między 19 a 25 pikseli w elemencie # size-2, na podstawie szerokości 500 pikseli i 960 pikseli elementu # size-2
resizeTextInRange(500,960,19,25,'#size-2');
Zmieniasz rozmiar tekstu między 13 a 20 pikseli w elemencie # size-1, na podstawie szerokości 500 i 960 pikseli elementu body
resizeTextInRange(500,960,13,20,'#size-1','body');
cały kod jest tam 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" />
Możesz także użyćmax-width
zamiast,max-device-width
aby uzyskać bardziej „responsywny” efekt.