У меня есть TweenLite, устанавливающий мой startTrigger на x пикселей в зависимости от размера matchMedia.Я хочу, чтобы этот matchMedia запускался при изменении размера браузера, поэтому я добавил прослушиватель событий.Он не работает, так как мне нужно перезагрузить страницу, чтобы она запустила matchMedia.
Я попытался вставить код matchMedia в мой приемник событий изменения размера, который также обрабатывает верхнюю позицию моего элемента.
var triggerOffset2 = document.documentElement.clientHeight / 2 + 44;
var cardHeight2 = $('#card2').outerHeight(true) / 2 + 22;
var duration2 = 1000;
var requestId2 = null;
window.addEventListener("resize", function() {
var sceneStart2;
if (window.matchMedia("(min-width: 1024px)").matches) {
sceneStart2 = 5000
} else {
sceneStart2 = 7000
}
console.log(sceneStart2);
triggerOffset2 = document.documentElement.clientHeight / 2 + 44;
TweenLite.set(".contain2", {
top: triggerOffset2 - cardHeight2
});
TweenLite.set(".timeline-trigger", {
top: triggerOffset2
});
});
var sceneStart2;
if (window.matchMedia("(min-width: 1024px)").matches) {
sceneStart2 = 5000
} else {
sceneStart2 = 7000
}
console.log(sceneStart2);
TweenLite.set(".contain2", {
top: triggerOffset2 - cardHeight2
});
TweenLite.set(".timeline-trigger", {
top: triggerOffset2
});
TweenLite.set(".start-trigger", {
top: sceneStart2
});
TweenLite.set(".end-trigger", {
top: sceneStart2 + duration2
});
// SCROLL MAGIC!!!
var tl2 = new TimelineMax({ paused: true })
.set(".card2", { }, sceneStart2)
.to(".card2", duration2, { rotationY: 180 }, sceneStart2)
.set(".card2", { })
// Only update on animation frames
window.addEventListener("scroll", function() {
if (!requestId2) {
requestId2 = requestAnimationFrame(update2);
}
});
update2();
// Set timeline time to scrollTop
function update2() {
tl2.time(window.pageYOffset + triggerOffset2);
requestId2 = null;
}
MatchMedia должна запускаться при изменении размера браузера для изменения верхней позиции .contain2 и номера для sceneStart2