Pod-klasa Shop. Powiększenie zdjęcia produktu w miejscu - lupa.
Ponieważ klasa jest inicjalizowana razem z Shop, wszystkie parametry należy nadać przed zdarzeniem domready lub najpóźniej w funkcji warunkowej Shop.imageZoom.condition()
Parametry Shop.imageZoom.options :
imageZoom w celu znalezienia adresu pełnego zdjęcia pobiera href rodzica. W aplikacji zdjęcia produktów znajdują się zawsze w odsyłaczach <a>. Są one używane przez galerię Milkbox.
Obiekt img otrzymuje zdarzenie onMouseenter w którym tworzony jest obiekt z container_class (i ewentualnie pozostałe). Działanie automatyczne, nie wymaga dodatkowych akcji.
Zachowanie imageZoom można modyfikować poprzez podmienienie, na własne, dwóch funkcji.
Wykorzystywana kiedy inner == false funkcja Shop.imageZoom.sidebox_size otrzymuje:
a zwraca obiekt {}, który określa rozmiar i pozycję (absolutą) sidediv:
Standardowe zachowanie funkcji to rozmiar taki sam jak oimg, natomiast pozycja na prawo z odstępem 10 pikseli.
Shop.imageZoom.sidebox_size = function(oimg, sidediv, divimg) { var c = oimg.getComputedSize(); var p = oimg.getPosition(); return { left : p.x + c.width + 10, top : p.y, width : c.width, height : c.height }; }
Shop.imageZoom.transform otrzymuje dwa parametry:
a zwraca (float) z przedziału 0.0 do 1.0. Wywoływana jest dla obydwu osi ( X / Y ) i podaje przesunięcie kursora w stosunku do górnego lewego rogu zdjęcia.
Standardowe zachowanie to transformacja x przez funkcję potęgową (^2 dla x < 0.5 i ^0.5 dla x > 0.5). Dzięki temu, granice zdjęcia powiększonego są znacznie szybciej osiągalne i użytkownik musi pokonywać kursorem mniejszy dystans.
Shop.imageZoom.transform = function(x, inner) { if(false == inner) return x; if(x < 0.5) { x = 3 * x * x - 1/4; // [ (2x)^2 / (4/3) ] - (1/3) } else { x = Math.sqrt(x - 0.5) * 1.5 + 0.5; } if(x >= 1) return 1; if(x <= 0) return 0; return x; }