WEBLEB
Accueil
Éditeur
Connexion
Pro
Français
English
Français
Español
Português
Deutsch
Italiano
हिंदी
Effet de survol GSAP
1637
Andev.web
Ouvrir dans l'éditeur
Publiez votre code
Recommandé
16 July 2025
Scène CSS avec guirlandes lumineuses et escaliers
18 November 2025
Metehan
29 September 2023
Animation de bouton de commande
HTML
Copy
Andev Web
STYLE
PRAISE
FASHION
CSS
Copy
@import url("https://fonts.googleapis.com/css2?family=Red+Rose:wght@400;700&display=swap"); * { box-sizing: border-box; margin: 0; padding: 0; } html, body { width: 100%; height: 100%; } body { background: #121013; display: grid; place-items: center; } .cards__wrapper { width: 100%; display: flex; flex-wrap: wrap; justify-content: center; align-items: center; pointer-events: none; opacity: 0; } .cards__wrapper .card { position: relative; width: 340px; height: 400px; margin: 3rem 5rem; pointer-events: none; } .cards__wrapper .card__image--wrapper { position: relative; width: 100%; height: 100%; overflow: hidden; filter: grayscale(0); transition: filter 0.5s ease; } .cards__wrapper .card__image { position: absolute; left: 0; top: 0; height: 100%; width: 100%; object-fit: cover; transform: scale(1.15); transition: transform 0.5s ease, opacity 0.35s ease; } .cards__wrapper .card__image--outer { position: relative; width: 100%; height: 100%; overflow: hidden; } .cards__wrapper .card__text { position: absolute; left: 0; bottom: 25%; transform: translateX(-8rem); pointer-events: none; user-select: none; mix-blend-mode: difference; } .cards__wrapper .card__text--inner { display: inline-block; color: #fff; font-size: 5rem; font-family: "Red Rose", Roboto; font-weight: 700; overflow: hidden; } .cards__wrapper .card__text--inner .word { white-space: nowrap; } .cards__wrapper .card__text--inner .char { display: inline-block; transform: translateY(100%); transition: transform 0.5s cubic-bezier(0.5, 0, 0, 1); transition-delay: calc(0ms + var(--char-index) * 20ms); } .cards__wrapper .card:hover .card__image { transform: scale(1); } .cards__wrapper .card:hover .card__text--inner .char { transform: translateY(0%); } .cards__wrapper:hover > .card:not(:hover) .card__image--wrapper { filter: grayscale(1); } .cards__wrapper:hover > .card:not(:hover) .card__image { opacity: 0.8; } .support { position: fixed; right: 10px; bottom: 10px; padding: 10px; display: flex; } .support a { margin: 0 10px; color: #fff; font-size: 1.8rem; backface-visibility: hidden; transition: all 150ms ease; } .support a:hover { transform: scale(1.1); }
JS
Copy
console.clear(); const { gsap, Splitting } = window; Splitting(); gsap.set('.cards__wrapper', { autoAlpha: 1 }) gsap.timeline({ defaults: { duration: 1.25, stagger: 0.125, ease: "expo.inOut", }, }) .fromTo(".card__image--wrapper", { yPercent: 110 }, { yPercent: 0 }, 0) .fromTo(".card__image--outer", { yPercent: -110 }, { yPercent: 0 }, 0) .set(".cards__wrapper, .card", { pointerEvents: "all" }, "-=1");