балансировка шкалы - PullRequest
       27

балансировка шкалы

0 голосов
/ 06 августа 2010

Эй, ребята, у меня есть формула в процентах от 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 не может быть больше 20px.

Любое руководство будет оценено.

1 Ответ

1 голос
/ 06 августа 2010

Предупреждение: я очень устал, это очень непроверено, и я редко связываюсь с 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 и т. Д.

...