<!--Добавить в Zero-блок-->
<div class="scroll-twist-wrapper-inside-1">
<div class='scroll-twist-wrapper-1'>
<div class="scroll-twist-wrapper-inside-anim-1">
<div class='scroll-twist-1 scroll-twist-card-1'></div>
</div>
</div>
</div>
<!---->
<script>
[1, 2].forEach(function(setNum) {
for (let cardNum = 1; cardNum <= 1; cardNum++) {
const baseSelector = `.uc-scroll-twist-${setNum} .scroll-twist-card-${cardNum}`;
$(`.uc-scroll-twist-${setNum} .scroll-twist-card-before-${cardNum}`).appendTo(baseSelector);
$(`.uc-scroll-twist-${setNum} .scroll-twist-card-after-${cardNum}`).appendTo(baseSelector);
}
});
</script>
<style>
.t396__elem[class*="scroll-twist-card-anim-"] {
perspective: 2000px;
transform-style: preserve-3d;
}
.t396__elem[class*="scroll-twist-content-after-"] {
zoom: 0 !important;
}
[class^="scroll-twist-wrapper-"] {
width: 100%;
height: 100%;
}
[class^="scroll-twist-wrapper-inside-"] {
perspective: 2000px;
backface-visibility: hidden;
width: 100%;
height: 100%;
transform-style: preserve-3d;
}
.t396__elem[class*="scroll-twist-card-after-"] {
transform: rotateY(-180deg);
}
[class^="scroll-twist-card-before-"] .tn-atom,
[class^="scroll-twist-card-after-"] .tn-atom {
backface-visibility: hidden;
}
[class^="scroll-twist-card-before-wrapper-"] div,
[class^="scroll-twist-card-after-wrapper-"] div,
.t396__elem[class*="scroll-twist-card-after-"],
.t396__elem[class*="scroll-twist-card-before-"] {
perspective: 2000px;
backface-visibility: hidden;
transform-style: preserve-3d;
}
[class^="scroll-twist-card-before-wrapper-"],
[class^="scroll-twist-card-after-wrapper-"] {
perspective: 2000px;
transform-style: preserve-3d;
top: 0;
left: 0;
width: 100%;
height: 100%;
position: absolute;
}
[class^="scroll-twist-card-after-wrapper-"] {
transform: rotateY(-180deg);
}
[class^="scroll-twist-inside-"] {
backface-visibility: hidden;
}
[class^="scroll-twist-"] {
position: absolute;
width: 100%;
height: 100%;
left: 0;
top: 0;
perspective: 2000px;
transform-style: preserve-3d;
}
@media only screen and (min-width: 320px) {
[class^="scroll-twist-card-before-"],
[class^="scroll-twist-card-after-"] {
backface-visibility: hidden;
zoom: 0 !important;
}
[class^="scroll-twist-card-before-wrapper-"] div,
[class^="scroll-twist-card-after-wrapper-"] div,
.t396__elem[class*="scroll-twist-card-after-"],
.t396__elem[class*="scroll-twist-card-before-"] {
zoom: 0 !important;
}
}
</style>
<script src="https://matilda-design.ru/library/GSAP.js"></script>
<script src="https://matilda-design.ru/library/ScrollTrigger.js"></script>
<script>
document.addEventListener('DOMContentLoaded', function () {
gsap.registerPlugin(ScrollTrigger);
function getEffectiveHeight(elem) {
if (!elem) return 0;
const height = elem.offsetHeight;
const zoom = parseFloat(getComputedStyle(elem).zoom || "1");
return height * zoom;
}
const width = window.innerWidth;
const isMobile = width >= 320 && width <= 479;
const isSmallTablet = width >= 480 && width <= 639;
const isTablet = width >= 640 && width <= 959;
const isLaptop = width >= 960 && width <= 1199;
const isLarge = width >= 1200;
let initialTransforms;
let endAnimParams;
initialTransforms = { x: 0, y: 0, z: 0, rotationY: 15 };
endAnimParams = { rotationY: -180 };
let i = 1;
while (true) {
const container = document.querySelector(`.uc-scroll-twist-${i}`);
if (!container) break;
const triggerStart = container.querySelector(`.scroll-twist-card-top`);
const triggerEnd = container.querySelector(`.scroll-twist-card-bottom`);
if (!triggerStart || !triggerEnd) {
i++;
continue;
}
const offsetTop = getEffectiveHeight(triggerStart);
const offsetBottom = getEffectiveHeight(triggerEnd);
const containerHeight = container.offsetHeight;
const startTrigger = `top+=${offsetTop} center`;
const endTrigger = `top+=${containerHeight - offsetBottom} center`;
const card = container.querySelector(`.scroll-twist-card-1`);
if (!card) {
i++;
continue;
}
gsap.set(card, initialTransforms);
gsap.to(card, {
...endAnimParams,
ease: "none",
scrollTrigger: {
trigger: container,
start: startTrigger,
end: endTrigger,
scrub: true,
markers: false
}
});
i++;
}
});
</script>