From 67b37f97552ccdc28c2bdd49ea77d1289626c2df Mon Sep 17 00:00:00 2001 From: Georg Hopp Date: Sat, 17 Sep 2016 09:28:55 +0200 Subject: [PATCH] clean parallax js --- app/assets/javascripts/parallax.coffee | 60 +++++++------------------- 1 file changed, 16 insertions(+), 44 deletions(-) diff --git a/app/assets/javascripts/parallax.coffee b/app/assets/javascripts/parallax.coffee index c60d40f..44b2e3f 100644 --- a/app/assets/javascripts/parallax.coffee +++ b/app/assets/javascripts/parallax.coffee @@ -4,61 +4,33 @@ # window.App ||= {} -content_top = content_left = width_delta = height_delta = 0 - App.init = -> - $('a[href*=\\#]').each -> - lpath = location.pathname.replace(/^\//,'') - tpath = this.pathname.replace(/^\//,'') - if lpath == tpath and - location.hostname == this.hostname and - this.hash.replace(/#/,'') - $targetId = $(this.hash) - $targetAnchor = $('[name=' + this.hash.slice(1) + ']') - $target = if $targetId.length - $targetId - else - if $targetAnchor.length - $targetAnchor - else - false - - if $target - targetOffset = $target.offset().top - + this.$slides = $('.section') + this.$menu = $("#nav a") + this.section = 0 + this.$menu.each -> + $target = $(this.hash) + if $target.length $(this).click -> - $('html, body').animate({scrollTop: targetOffset}, 1000) + $('html, body').animate({scrollTop: $target.offset().top}, 1000) return false App.scroll = -> + if not this.$slides + return 0 v_scroll = $(document).scrollTop() - section = Math.floor(v_scroll / $(window).innerHeight()) - [section, section+1].forEach (section) -> - bg_pos = -((v_scroll-(section*$(window).innerHeight()))/2) - section_element = $($(".section")[section]) - if section_element and section_element.css("background-image") != "none" - content = section_element.find(".content") - content.css("display", "none") - section_element.css( - "background-position", - "center " + bg_pos + "px") - content.css("display", "block") - -App.scroll2 = -> - v_scroll = $(document).scrollTop() - section = 0 - for value, index in $(".section") - if v_scroll >= $(value).offset().top - section = index - if not $($("#nav a")[section]).hasClass('active') - $("#nav a").removeClass("active") - $($("#nav a")[section]).addClass('active') + for slide,i in this.$slides + if v_scroll >= slide.offsetTop + this.section = i + if not $(this.$menu[this.section]).hasClass('active') + $(this.$menu).removeClass('active') + $(this.$menu[this.section]).addClass('active') $(document).on "page:change", -> App.init() $(window).on "scroll", -> - App.scroll2() + App.scroll() $(document).ready -> App.init()