From 7f6239e987d6d0fb16037c93f183f6b36c3acc02 Mon Sep 17 00:00:00 2001 From: Jake Howard Date: Thu, 13 Aug 2015 14:04:18 +0100 Subject: [PATCH] Moved old functions into object --- parallax.js | 33 ++++++++++++++++++++++++++------- 1 file changed, 26 insertions(+), 7 deletions(-) diff --git a/parallax.js b/parallax.js index eb03a2a..a25347b 100644 --- a/parallax.js +++ b/parallax.js @@ -1,20 +1,39 @@ var Parallax = { - initialise: function() { - + initialise: function(createEvents) { + $(this.ident).each(function(){ + // Calculate Offset + inset = $(this).attr('parallax-inset'); + image_height = $(this).height(); + range = image_height / inset; + $(this).attr('parallax-offset', range / 2); + }); + console.log("Parallax Initialised."); + if (createEvents) {this.createEvents();} + this.calculate(); }, calculate: function() { + window_top = $(window).scrollTop(); + window_bottom = window_top + $(window).height(); + $(this.ident).each(function(){ + if (!is_on_screen(this) || !$(this).attr('parallax-offset') != false) { return; } + element = $(this); + center_pos = (element.offset().top - $(window).scrollTop()) + (element.height() / 2); + perc = -(0.5 - ((window_top - center_pos) / window_bottom)); + pos = Math.round((perc * element.attr('parallax-offset')) * 100) / 100; + element.css('background-position',"0px " + pos + "px"); + }); }, - events: function() { - + createEvents: function() { + $(window).scroll(function() { Parallax.calculate(); }); + $(window).resize(function() { Parallax.initialise(); }) }, ident: '.parallax' } function is_on_screen(elm) { - - var vpH = $(window).height(), // Viewport Height - st = $(window).scrollTop(), // Scroll Top + var vpH = $(window).height(), + st = $(window).scrollTop(), y = $(elm).offset().top, elementHeight = $(elm).height(); return ((y < (vpH + st)) && (y > (st - elementHeight)));