J'ai créé une variante de https://stackoverflow.com/a/17845473/189411
où vous pouvez définir la taille minimale et maximale du texte en fonction de la taille minimale et maximale de la case à cocher. En outre, vous pouvez vérifier la taille d'un élément de domaine différent de la boîte dans laquelle vous voulez appliquer la taille du texte.
Vous redimensionnez le texte entre 19px et 25px sur l'élément #size-2, en fonction de la largeur de 500px et 960px de l'élément #size-2.
resizeTextInRange(500,960,19,25,'#size-2');
Vous redimensionnez le texte entre 13px et 20px sur l'élément #size-1, en fonction de la largeur de l'élément body (500px et 960px).
resizeTextInRange(500,960,13,20,'#size-1','body');
le code complet est là 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');
});
});