Предупреждение: я очень устал, это очень непроверено, и я редко связываюсь с javascript - так что я надеюсь, что это имеет смысл.
Смысл в том, чтобы определить максимальную разницу, которая будет толкать весы до конца.Когда вы получаете реальную разницу, вы видите, какой процент от максимума у вас есть.Тогда вы просто получите этот процент 20 пикселей.Конечно, все, что превышает 100%, вы просто исправляете на 100%, чтобы не превышать 20 пикселей.(Надеюсь, этот код работает)
var difference;
var max_expected_difference;
var diff_percent;
var fValue;
diff_percent = difference/max_expected_difference;
diff_percent = Math.round(diff_percent*100)/100;
if (diff_percent>1) diff_percent = 1;
if (diff_percent
В случае, если это неясно, вы добавите к 183px в любом случае.Значение f должно быть отрицательным, если разница отрицательная.
Редактировать: Похоже, я неправильно понял, как вы реализуете это, но основная идея все равно будет работать хорошо для вас.Честно говоря, если ваше максимальное изменение калорийности составляет 200%, то ярлык к вашему fValue делит вашу разницу в% на 10 и округляет десятичную дробь.Таким образом, 148% будут 15px, 81% будут 8px и т. Д.