TEST FIX AND KEEPING OLD VERSION
All checks were successful
continuous-integration/drone/push Build is passing
All checks were successful
continuous-integration/drone/push Build is passing
This commit is contained in:
parent
965b708b76
commit
9554d760fa
96
plugins/carhop-blocks/src/scroll-story-block/view-old.js
Normal file
96
plugins/carhop-blocks/src/scroll-story-block/view-old.js
Normal file
|
|
@ -0,0 +1,96 @@
|
||||||
|
const cards = gsap.utils.toArray(".scroll-story-block .narrative-card");
|
||||||
|
|
||||||
|
// Ajouter des classes alternées pour le styling
|
||||||
|
cards.forEach((card, index) => {
|
||||||
|
if (index % 2 === 0) {
|
||||||
|
card.classList.add("narrative-card--even");
|
||||||
|
} else {
|
||||||
|
card.classList.add("narrative-card--odd");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// Définir le breakpoint pour mobile/desktop (vous pouvez l'ajuster selon vos besoins)
|
||||||
|
const MOBILE_BREAKPOINT = 768;
|
||||||
|
|
||||||
|
let scrollTriggers = [];
|
||||||
|
let stickDistance = 0;
|
||||||
|
|
||||||
|
// Fonction pour initialiser les ScrollTriggers (desktop)
|
||||||
|
function initScrollTriggers() {
|
||||||
|
// Nettoyer d'abord les ScrollTriggers existants
|
||||||
|
killScrollTriggers();
|
||||||
|
|
||||||
|
if (cards.length === 0) return;
|
||||||
|
|
||||||
|
let firstCardST = ScrollTrigger.create({
|
||||||
|
trigger: cards[0],
|
||||||
|
start: "top 10%",
|
||||||
|
});
|
||||||
|
scrollTriggers.push(firstCardST);
|
||||||
|
|
||||||
|
let lastCardST = ScrollTrigger.create({
|
||||||
|
trigger: cards[cards.length - 1],
|
||||||
|
start: "top 10%",
|
||||||
|
});
|
||||||
|
scrollTriggers.push(lastCardST);
|
||||||
|
|
||||||
|
cards.forEach((card, index) => {
|
||||||
|
var scale = 1 - (cards.length - index) * 0.025;
|
||||||
|
let scaleDown = gsap.to(card, {
|
||||||
|
scale: scale,
|
||||||
|
"transform-origin": '"50% ' + (lastCardST.start + stickDistance) + '"',
|
||||||
|
});
|
||||||
|
|
||||||
|
let cardST = ScrollTrigger.create({
|
||||||
|
trigger: card,
|
||||||
|
start: "top 10%",
|
||||||
|
end: () => lastCardST.start + stickDistance,
|
||||||
|
pin: true,
|
||||||
|
// markers: true,
|
||||||
|
pinSpacing: false,
|
||||||
|
ease: "none",
|
||||||
|
animation: scaleDown,
|
||||||
|
toggleActions: "restart none none reverse",
|
||||||
|
});
|
||||||
|
|
||||||
|
scrollTriggers.push(cardST);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// Fonction pour détruire tous les ScrollTriggers
|
||||||
|
function killScrollTriggers() {
|
||||||
|
scrollTriggers.forEach((st) => st.kill());
|
||||||
|
scrollTriggers = [];
|
||||||
|
|
||||||
|
// Réinitialiser les styles inline des cartes
|
||||||
|
cards.forEach((card) => {
|
||||||
|
gsap.set(card, { clearProps: "all" });
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// Fonction pour gérer le responsive
|
||||||
|
function handleResize() {
|
||||||
|
const isMobile = window.innerWidth < MOBILE_BREAKPOINT;
|
||||||
|
|
||||||
|
if (isMobile) {
|
||||||
|
// Sur mobile : détruire les ScrollTriggers
|
||||||
|
killScrollTriggers();
|
||||||
|
} else {
|
||||||
|
// Sur desktop : créer les ScrollTriggers s'ils n'existent pas
|
||||||
|
if (scrollTriggers.length === 0) {
|
||||||
|
initScrollTriggers();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Initialisation au chargement
|
||||||
|
handleResize();
|
||||||
|
|
||||||
|
// Écouter les événements de resize avec debounce pour optimiser les performances
|
||||||
|
let resizeTimer;
|
||||||
|
window.addEventListener("resize", () => {
|
||||||
|
clearTimeout(resizeTimer);
|
||||||
|
resizeTimer = setTimeout(() => {
|
||||||
|
handleResize();
|
||||||
|
}, 250);
|
||||||
|
});
|
||||||
|
|
@ -1,25 +1,31 @@
|
||||||
const cards = gsap.utils.toArray(".scroll-story-block .narrative-card");
|
const MOBILE_BREAKPOINT = 768;
|
||||||
|
|
||||||
// Ajouter des classes alternées pour le styling
|
let scrollTriggers = [];
|
||||||
cards.forEach((card, index) => {
|
let stickDistance = 0;
|
||||||
|
|
||||||
|
function getBlocks() {
|
||||||
|
return gsap.utils.toArray(".scroll-story-block");
|
||||||
|
}
|
||||||
|
|
||||||
|
function getBlockCards(block) {
|
||||||
|
return gsap.utils.toArray(block.querySelectorAll(".narrative-card"));
|
||||||
|
}
|
||||||
|
|
||||||
|
function applyEvenOddClasses() {
|
||||||
|
getBlocks().forEach((block) => {
|
||||||
|
getBlockCards(block).forEach((card, index) => {
|
||||||
|
card.classList.remove("narrative-card--even", "narrative-card--odd");
|
||||||
if (index % 2 === 0) {
|
if (index % 2 === 0) {
|
||||||
card.classList.add("narrative-card--even");
|
card.classList.add("narrative-card--even");
|
||||||
} else {
|
} else {
|
||||||
card.classList.add("narrative-card--odd");
|
card.classList.add("narrative-card--odd");
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
// Définir le breakpoint pour mobile/desktop (vous pouvez l'ajuster selon vos besoins)
|
function initScrollTriggersForBlock(block) {
|
||||||
const MOBILE_BREAKPOINT = 768;
|
const cards = getBlockCards(block);
|
||||||
|
|
||||||
let scrollTriggers = [];
|
|
||||||
let stickDistance = 0;
|
|
||||||
|
|
||||||
// Fonction pour initialiser les ScrollTriggers (desktop)
|
|
||||||
function initScrollTriggers() {
|
|
||||||
// Nettoyer d'abord les ScrollTriggers existants
|
|
||||||
killScrollTriggers();
|
|
||||||
|
|
||||||
if (cards.length === 0) return;
|
if (cards.length === 0) return;
|
||||||
|
|
||||||
let firstCardST = ScrollTrigger.create({
|
let firstCardST = ScrollTrigger.create({
|
||||||
|
|
@ -38,7 +44,8 @@ function initScrollTriggers() {
|
||||||
var scale = 1 - (cards.length - index) * 0.025;
|
var scale = 1 - (cards.length - index) * 0.025;
|
||||||
let scaleDown = gsap.to(card, {
|
let scaleDown = gsap.to(card, {
|
||||||
scale: scale,
|
scale: scale,
|
||||||
"transform-origin": '"50% ' + (lastCardST.start + stickDistance) + '"',
|
// transformOrigin: "50% " + (lastCardST.start + stickDistance),
|
||||||
|
// transformOrigin: "center top",
|
||||||
});
|
});
|
||||||
|
|
||||||
let cardST = ScrollTrigger.create({
|
let cardST = ScrollTrigger.create({
|
||||||
|
|
@ -46,8 +53,9 @@ function initScrollTriggers() {
|
||||||
start: "top 10%",
|
start: "top 10%",
|
||||||
end: () => lastCardST.start + stickDistance,
|
end: () => lastCardST.start + stickDistance,
|
||||||
pin: true,
|
pin: true,
|
||||||
// markers: true,
|
markers: true,
|
||||||
pinSpacing: false,
|
pinSpacing: false,
|
||||||
|
// pinSpacing: true,
|
||||||
ease: "none",
|
ease: "none",
|
||||||
animation: scaleDown,
|
animation: scaleDown,
|
||||||
toggleActions: "restart none none reverse",
|
toggleActions: "restart none none reverse",
|
||||||
|
|
@ -57,36 +65,48 @@ function initScrollTriggers() {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
// Fonction pour détruire tous les ScrollTriggers
|
function initScrollTriggers() {
|
||||||
|
killScrollTriggers();
|
||||||
|
|
||||||
|
getBlocks().forEach((block) => {
|
||||||
|
initScrollTriggersForBlock(block);
|
||||||
|
});
|
||||||
|
|
||||||
|
ScrollTrigger.refresh();
|
||||||
|
}
|
||||||
|
|
||||||
function killScrollTriggers() {
|
function killScrollTriggers() {
|
||||||
scrollTriggers.forEach((st) => st.kill());
|
scrollTriggers.forEach((st) => st.kill());
|
||||||
scrollTriggers = [];
|
scrollTriggers = [];
|
||||||
|
|
||||||
// Réinitialiser les styles inline des cartes
|
gsap.utils.toArray(".scroll-story-block .narrative-card").forEach((card) => {
|
||||||
cards.forEach((card) => {
|
|
||||||
gsap.set(card, { clearProps: "all" });
|
gsap.set(card, { clearProps: "all" });
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
// Fonction pour gérer le responsive
|
|
||||||
function handleResize() {
|
function handleResize() {
|
||||||
const isMobile = window.innerWidth < MOBILE_BREAKPOINT;
|
const isMobile = window.innerWidth < MOBILE_BREAKPOINT;
|
||||||
|
|
||||||
if (isMobile) {
|
if (isMobile) {
|
||||||
// Sur mobile : détruire les ScrollTriggers
|
|
||||||
killScrollTriggers();
|
killScrollTriggers();
|
||||||
} else {
|
} else {
|
||||||
// Sur desktop : créer les ScrollTriggers s'ils n'existent pas
|
|
||||||
if (scrollTriggers.length === 0) {
|
if (scrollTriggers.length === 0) {
|
||||||
initScrollTriggers();
|
initScrollTriggers();
|
||||||
|
} else {
|
||||||
|
ScrollTrigger.refresh();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Initialisation au chargement
|
applyEvenOddClasses();
|
||||||
handleResize();
|
handleResize();
|
||||||
|
|
||||||
// Écouter les événements de resize avec debounce pour optimiser les performances
|
window.addEventListener("load", () => {
|
||||||
|
if (window.innerWidth >= MOBILE_BREAKPOINT && scrollTriggers.length > 0) {
|
||||||
|
ScrollTrigger.refresh();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
let resizeTimer;
|
let resizeTimer;
|
||||||
window.addEventListener("resize", () => {
|
window.addEventListener("resize", () => {
|
||||||
clearTimeout(resizeTimer);
|
clearTimeout(resizeTimer);
|
||||||
|
|
|
||||||
116
plugins/carhop-blocks/src/scroll-story-block/view_test-fix.js
Normal file
116
plugins/carhop-blocks/src/scroll-story-block/view_test-fix.js
Normal file
|
|
@ -0,0 +1,116 @@
|
||||||
|
const MOBILE_BREAKPOINT = 768;
|
||||||
|
|
||||||
|
let scrollTriggers = [];
|
||||||
|
let stickDistance = 0;
|
||||||
|
|
||||||
|
function getBlocks() {
|
||||||
|
return gsap.utils.toArray(".scroll-story-block");
|
||||||
|
}
|
||||||
|
|
||||||
|
function getBlockCards(block) {
|
||||||
|
return gsap.utils.toArray(block.querySelectorAll(".narrative-card"));
|
||||||
|
}
|
||||||
|
|
||||||
|
function applyEvenOddClasses() {
|
||||||
|
getBlocks().forEach((block) => {
|
||||||
|
getBlockCards(block).forEach((card, index) => {
|
||||||
|
card.classList.remove("narrative-card--even", "narrative-card--odd");
|
||||||
|
if (index % 2 === 0) {
|
||||||
|
card.classList.add("narrative-card--even");
|
||||||
|
} else {
|
||||||
|
card.classList.add("narrative-card--odd");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function initScrollTriggersForBlock(block) {
|
||||||
|
const cards = getBlockCards(block);
|
||||||
|
if (cards.length === 0) return;
|
||||||
|
|
||||||
|
let firstCardST = ScrollTrigger.create({
|
||||||
|
trigger: cards[0],
|
||||||
|
start: "top 10%",
|
||||||
|
});
|
||||||
|
scrollTriggers.push(firstCardST);
|
||||||
|
|
||||||
|
let lastCardST = ScrollTrigger.create({
|
||||||
|
trigger: cards[cards.length - 1],
|
||||||
|
start: "top 10%",
|
||||||
|
});
|
||||||
|
scrollTriggers.push(lastCardST);
|
||||||
|
|
||||||
|
cards.forEach((card, index) => {
|
||||||
|
var scale = 1 - (cards.length - index) * 0.025;
|
||||||
|
let scaleDown = gsap.to(card, {
|
||||||
|
scale: scale,
|
||||||
|
// transformOrigin: "50% " + (lastCardST.start + stickDistance),
|
||||||
|
// transformOrigin: "center top",
|
||||||
|
});
|
||||||
|
|
||||||
|
let cardST = ScrollTrigger.create({
|
||||||
|
trigger: card,
|
||||||
|
start: "top 10%",
|
||||||
|
end: () => lastCardST.start + stickDistance,
|
||||||
|
pin: true,
|
||||||
|
markers: true,
|
||||||
|
pinSpacing: false,
|
||||||
|
// pinSpacing: true,
|
||||||
|
ease: "none",
|
||||||
|
animation: scaleDown,
|
||||||
|
toggleActions: "restart none none reverse",
|
||||||
|
});
|
||||||
|
|
||||||
|
scrollTriggers.push(cardST);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function initScrollTriggers() {
|
||||||
|
killScrollTriggers();
|
||||||
|
|
||||||
|
getBlocks().forEach((block) => {
|
||||||
|
initScrollTriggersForBlock(block);
|
||||||
|
});
|
||||||
|
|
||||||
|
ScrollTrigger.refresh();
|
||||||
|
}
|
||||||
|
|
||||||
|
function killScrollTriggers() {
|
||||||
|
scrollTriggers.forEach((st) => st.kill());
|
||||||
|
scrollTriggers = [];
|
||||||
|
|
||||||
|
gsap.utils.toArray(".scroll-story-block .narrative-card").forEach((card) => {
|
||||||
|
gsap.set(card, { clearProps: "all" });
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function handleResize() {
|
||||||
|
const isMobile = window.innerWidth < MOBILE_BREAKPOINT;
|
||||||
|
|
||||||
|
if (isMobile) {
|
||||||
|
killScrollTriggers();
|
||||||
|
} else {
|
||||||
|
if (scrollTriggers.length === 0) {
|
||||||
|
initScrollTriggers();
|
||||||
|
} else {
|
||||||
|
ScrollTrigger.refresh();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
applyEvenOddClasses();
|
||||||
|
handleResize();
|
||||||
|
|
||||||
|
window.addEventListener("load", () => {
|
||||||
|
if (window.innerWidth >= MOBILE_BREAKPOINT && scrollTriggers.length > 0) {
|
||||||
|
ScrollTrigger.refresh();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
let resizeTimer;
|
||||||
|
window.addEventListener("resize", () => {
|
||||||
|
clearTimeout(resizeTimer);
|
||||||
|
resizeTimer = setTimeout(() => {
|
||||||
|
handleResize();
|
||||||
|
}, 250);
|
||||||
|
});
|
||||||
Loading…
Reference in New Issue
Block a user