olya_097, функция вызывается с массивом из двух параметров, первый это отступ от верхнего левого угла по вертикали, а второй элемент это отступ по горизонтали.
olya_097, вообще здесь вычисляется смещение фона у окошка-лупы, а не какие-то размеры.
И логичнее, если бы было написано так:
// В скобка высчитывается доля координат курсора относительно размеров картинки (0...1)
// Затем умножается на 100, чтобы получились проценты.
shiftXpercent = (arr[0] / el.clientWidth) * 100;
shiftYpercent = (arr[1] / el.clientHeight) * 100;
olya_097, я солидарен с ответом выше.
Давайте обратимся к алгебре, забудем про код.
Если мы а делим на b, то это тоже самое, что а умножить на число обратное b, то есть 1/b.
Тепрь посмотрим на такое:
a делим на b и делим все это на c, это тоже самое, что a поделить на дробь b/c. Деление это умножение на обратное число, в данном случае это a умножить на c/b.
Как умножить дроби? Нужно числители перемножить и перемножить знаменатели под одной общей дробью, которая заменяет знак деления.
Вернемся к примеру выше, arr[0] / (e.clientWidth / 100).
arr[0] заменим на a, e.clientWidth на b.
Итого, условие:
1) a / ( b / 100 ).
2) a * 100 / b.
3) a / b * 100.
Если два числа поделить друг на друга и умножить на 100 получим сколько в процентах числитель составляет от знаминателя.
PS писатель кода везунчик, ему повезло, что в итоге получается как надо, но код написан, как по мне, криво.
olya_097, мы сместили мышку влево на 10px, сколько это в процентах от всего элемента, если весь элемент, например, 200px?
(10/200) * 100% = 0.05 * 100%, или 5% Если мы 200 поделим на 10, то получим сколько процентов вся ширина элемента составит от того на сколько подвинули мышку. Нам надо узнать на сколько мышка подвинулась, и на столько же сместить мелкую картинку. Поэтому arr[0] / e.clientWidth.