Я створив варіант https://stackoverflow.com/a/17845473/189411
де ви можете встановити мінімальний та максимальний розмір тексту щодо мінімального та максимального розміру вікна, який потрібно "перевірити". Крім того, ви можете перевірити розмір елемента dom, який відрізняється від поля, де ви хочете застосувати розмір тексту.
Ви змінюєте розмір тексту від 19 пікселів до 25 пікселів для елемента # size-2 на основі ширини 500px та 960px елемента # 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
щоб відчувати себе більш чуйним.