// import $ from "jquery"; const $ = require('jquery'); class MagazineHeader { constructor(header) { this.header = header.addClass('initiated'); this.gradient = header.find('.gradient'); this.title = header.find('.title'); this.window = $(window); this.minScale = 0; this.preventResize = false; this.getMinScale(); this.initScroll(); this.window.on('resize', () => { this.getMinScale(); }) $('body') .on('overlay-open', () => { this.preventResize = true; }) .on('overlay-close', () => { this.preventResize = false; }) } initScroll() { window.addEventListener("scroll", () => { window.requestAnimationFrame( () => { if (!this.preventResize) { this.checkScroll(); } }) },{passive: true}); this.checkScroll(); }; checkScroll() { const st = this.window.scrollTop(); const scale = 1 - Math.round(st / 4) / 100; const opacity = 1 - Math.round(st / 2) / 100; this.gradient.css({'transform': 'scale(1, ' + (scale > this.minScale ? scale : this.minScale) + ')'}); this.title.css({ 'transform': 'translate(-50%, -50%) scale(' + (scale > this.minScale ? scale : this.minScale) + ')', 'opacity': opacity > 0 ? opacity : 0 }) } getMinScale() { this.minScale = Math.round(1000 / this.header.outerHeight()) / 100; } } $('body').on('ihk-init dynamic-component-loaded gfi-dynamic-init', function () { $('.magazine-header:not(.initiated)').each(function(i) { new MagazineHeader($(this)); }); })