балансировка весов
-
26-09-2019 - |
Вопрос
Привет, ребята, у меня есть формула процентного соотношения Cals_in и Cals_out (из 200%).
я создал шкалу, чтобы показать разницу значений в процентах.Проблема в том, что я хочу преобразовать разницу в высоте пикселей, чтобы переместить масштаб вверх или вниз.
function setScalesToValue(fValue) {
document.getElementById("cals_in").style.bottom = (183 + fValue) + "px";
document.getElementById("cals_out").style.bottom = (183 - fValue) + "px";
}
Начальная позиция шкалы — 183, затем разница добавляется или вычитается, чтобы показать проекции на шкале.Это работает не слишком хорошо, и я прошу чьей-либо помощи, чтобы использовать процент возврата для изменения шкалы.
Примечание:fValue не может быть больше 20 пикселей.
Любое руководство будет оценено по достоинству.
Решение
Предупреждение:Я очень устал, это очень непроверено, и я редко связываюсь с 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
Если это неясно, в любом случае вы добавите 183 пикселя.fValue должно быть отрицательным, если разница отрицательна.
Редактировать:Похоже, я неправильно понял, как вы это реализуете, но основная идея у вас все равно будет работать нормально.Честно говоря, если ваше максимальное изменение калорий составляет 200%, то кратчайший путь к вашему fValue — это разделить разницу в % на 10 и округлить десятичную дробь.Таким образом, 148% будет 15 пикселей, 81% будет 8 пикселей и т. д.