TweenLite.defaultEase = Linear.easeNone;
var controller = new ScrollMagic.Controller();
var tl = new TimelineMax();
var pannelEffectsMap = {
0: {xPercent: 100},
1: {xPercent: -100},
2: {yPercent: 100},
};
var panels = document.querySelectorAll('.panel');
panels.forEach(function(panel, index){
if(index !== 0){
var mapIndex = index % 3 // Так как в pannelEffectsMap только 3 "эффекта"
tl.from(panel, 1, pannelEffectsMap[mapIndex]);
}
})
new ScrollMagic.Scene({
triggerElement: "#pinMaster",
triggerHook: "onLeave",
duration: "200%"
})
.setPin("#pinMaster")
.setTween(tl)
.addIndicators({
colorTrigger: "white",
colorStart: "white",
colorEnd: "white",
indent: 40
})
.addTo(controller);
var panels = document.querySelectorAll('.panel');
var pannelEffectsMap = {
0: {xPercent: 100},
1: {xPercent: -100},
2: {yPercent: 100},
}
pannels.forEach(function(panel, index){
tl.from(panel, 1, pannelEffectsMap[index]);
})
именно Ваш спрайт
и всю именно Вашу вёрстку
и всё проверю. Секунду... e.stopPropagation();
menuItems[x]. // при клике назад во втором линке menuItem[1] - .navigation__item.
querySelector(".navigation__list"). // у него только один ребёнок - a. Соответственно тут null
classList.remove("navigation__submenu--active"); // а у null нет classList.
Вообще есть два подхода чтобы именно "забиндить" контекст.
Второй через замыкание.
И два метода при вызове функции - call и apply