refresh formes pos on window resize

This commit is contained in:
2026-02-20 11:43:50 +01:00
parent 300f6c5b70
commit c8c5901a6a
4 changed files with 41 additions and 16 deletions

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -1,8 +1,8 @@
import { createApp } from 'vue' // import { createApp } from 'vue'
import '../scss/main.scss' import '../scss/main.scss'
import Content from './vuejs/Content.vue' // import Content from './vuejs/Content.vue'
import REST from './api/rest-axios' // import REST from './api/rest-axios'
// import LocomotiveScroll from 'locomotive-scroll'; // import LocomotiveScroll from 'locomotive-scroll';
// const scroll = new LocomotiveScroll(); // const scroll = new LocomotiveScroll();
@@ -50,6 +50,7 @@ gsap.registerPlugin(ScrollTrigger, ScrollSmoother);
let sizes = []; let sizes = [];
let cardsForms = [];
// ___ _ _ // ___ _ _
// |_ _|_ _ (_) |_ // |_ _|_ _ (_) |_
@@ -93,6 +94,14 @@ gsap.registerPlugin(ScrollTrigger, ScrollSmoother);
} }
function onWindowResize() {
cardsForms.forEach(({card, forme, formepos}) => {
// console.log(`card`, card, 'forme', forme, 'formepos', formepos);
forme.style.top = `${card.offsetTop + formepos.top}px`;
forme.style.left = `${card.offsetLeft + formepos.left}px`;
})
}
async function initBgFormes(){ async function initBgFormes(){
const container = document.querySelector('main[role="main"] > .layout-content > .wrapper'); const container = document.querySelector('main[role="main"] > .layout-content > .wrapper');
// console.log('container', container); // console.log('container', container);
@@ -111,6 +120,9 @@ gsap.registerPlugin(ScrollTrigger, ScrollSmoother);
let oddeven=1; let oddeven=1;
for (const card of cards) { for (const card of cards) {
// console.log('card', card); // console.log('card', card);
let cardFormObject = {
card: card
};
// random forme // random forme
// avoid duplicated formes // avoid duplicated formes
@@ -125,6 +137,19 @@ gsap.registerPlugin(ScrollTrigger, ScrollSmoother);
container.prepend(forme); container.prepend(forme);
cardFormObject.forme = forme;
// register relative position of forme against card
cardFormObject.formepos = {
left: forme.offsetLeft - card.offsetLeft,
top: forme.offsetTop - card.offsetTop
}
// register cards and formes
cardsForms.push(cardFormObject);
// console.log('cardsForms', cardsForms);
// Snap au centre de la fenêtre pour la card en utilisant le plugin Snap de GSAP // Snap au centre de la fenêtre pour la card en utilisant le plugin Snap de GSAP
// ScrollTrigger.create({ // ScrollTrigger.create({
// trigger: document.querySelector('.partie-principes-pratique'), // trigger: document.querySelector('.partie-principes-pratique'),
@@ -210,9 +235,13 @@ gsap.registerPlugin(ScrollTrigger, ScrollSmoother);
// inverse oddeven // inverse oddeven
oddeven*=-1; oddeven*=-1;
} }
window.addEventListener('resize', onWindowResize);
} }
async function createForme(card, n){ async function createForme(card, n){
let forme = document.createElement('div'); let forme = document.createElement('div');
forme.classList.add('bg-forme'); forme.classList.add('bg-forme');

View File

@@ -417,6 +417,7 @@ main[role="main"]{
// transform: translateY(-3em); // transform: translateY(-3em);
position: absolute; position: absolute;
top:-1em; top:-1em;
font-size: 1.2em;
&>*{ &>*{
font-weight: 600; font-weight: 600;
} }