Bekijk transitiecasestudies

Swetha Gopalakrishnan
Swetha Gopalakrishnan
Saurabh Rajpal
Saurabh Rajpal

Weergaveovergangen zijn geanimeerde en naadloze overgangen tussen verschillende statussen van een webpagina of de gebruikersinterface van een applicatie. De View Transition API is ontworpen om u deze effecten op een eenvoudigere en efficiëntere manier te laten creëren dan ooit tevoren. De API biedt meerdere voordelen ten opzichte van eerdere JavaScript-benaderingen, waaronder:

  • Verbeterde gebruikerservaring: vloeiende overgangen en visuele aanwijzingen begeleiden gebruikers door wijzigingen in de gebruikersinterface, waardoor navigatie natuurlijk en minder schokkerig aanvoelt.
  • Visuele continuïteit: Door een gevoel van continuïteit tussen weergaven te behouden, wordt de cognitieve belasting verminderd en kunnen gebruikers hun weg vinden in de applicatie.
  • Prestaties: De API probeert zo min mogelijk bronnen van de hoofdthread te gebruiken, waardoor animaties vloeiender worden.
  • Moderne esthetiek: de verbeterde overgangen dragen bij aan een verzorgde en boeiende gebruikerservaring.

Browser Support

  • Chroom: 111.
  • Rand: 111.
  • Firefox: niet ondersteund.
  • Safari: 18.

Source

Dit bericht maakt deel uit van een serie waarin wordt besproken hoe e-commercebedrijven hun website hebben verbeterd met nieuwe CSS- en UI-functies. In dit artikel leest u hoe sommige bedrijven de View Transition API hebben geïmplementeerd en ervan hebben geprofiteerd.

rodeBus

RedBus heeft er altijd naar gestreefd om zoveel mogelijk gelijkheid te creëren tussen hun native en webervaringen. Vóór de View Transition API was het implementeren van deze animaties op onze webassets een uitdaging. Maar met de API vonden we het intuïtief om overgangen te creëren voor meerdere gebruikersreizen, waardoor de webervaring meer op een app lijkt. Dit alles, gecombineerd met prestatievoordelen, maakt het een onmisbare functie voor alle websites . — Amit Kumar , Senior Engineering Manager, redBus .

Het team heeft op meerdere plaatsen weergaveovergangen geïmplementeerd. Hier is een voorbeeld van een combinatie van fade-in en slide-in animatie op het inlogpictogram op de homepage.

Vervaag en schuif in de weergaveovergangen wanneer de gebruiker op het aanmeldpictogram op de redBus-startpagina klikt.

Code

Deze implementatie maakt gebruik van meerdere view-transition-name en aangepaste animaties ( scale-down en scale-up ). Door view-transition-name met een unieke waarde te gebruiken, wordt het aanmeldonderdeel gescheiden van de rest van de pagina, zodat het apart geanimeerd kan worden. Door een nieuwe unieke view-transition-name aan te maken, wordt ook een nieuwe ::view-transition-group aangemaakt in de pseudo-elementboom (weergegeven in de volgende code), waardoor deze apart van de standaard ::view-transition-group(root) kan worden bewerkt.

::view-transition
├─::view-transition-group(root)
│ └─…
├─::view-transition-group(signin)
│ └─…
└─::view-transition-group(signinclose)   
└─…
//Code for VT for login
  if (!document.startViewTransition) {
   this.setState(
     {
       closeSigninModal: condition ? true : false
     },
     () => {
       if (closeSigninCb) {
         closeSigninCb();
       }
     }
   );
 } else {
   const transition = document.startViewTransition();
   transition.ready.finally(() => {
     setTimeout(() => {
       this.setState(
         {
           closeSigninModal: condition ? true : false
         },
         () => {
           if (closeSigninCb) {
             closeSigninCb();
           }
         }
       );
     }, 500);
   });
 }

.signin_open {
 view-transition-name: signin;
}

.signin_close  {
 view-transition-name: signinclose;
}

::view-transition-group(signin),
::view-transition-group(signinclose) {
 animation-duration: 0.5s;
}

::view-transition-old(signin) {
 animation-name: -ua-view-transition-fade-out, scale-down;
}
::view-transition-new(signin) {
 animation-name: -ua-view-transition-fade-in, scale-up;
}

::view-transition-new(signinclose) {
 animation-name: -ua-view-transition-fade-out, scale-down;
}

@keyframes scale-down {
 to {
     scale: 0;
 }
}

@keyframes scale-up {
 from {
     scale: 0;
 }
}

Tokopedia

Het team gebruikte weergaveovergangen om een ​​vervagende animatie toe te voegen wanneer de gebruiker tussen productminiaturen schakelt.

De implementatie is zo eenvoudig. Door startViewTransition te gebruiken krijgen we onmiddellijk een aangenamere overgang in vergelijking met de vorige implementatie zonder enige effecten . — Andy Wihalim , Senior Software Engineer, Tokopedia .

Voor

Na

Code

De volgende code maakt gebruik van een React-framework en bevat frameworkspecifieke code, zoals flushSync. Lees meer over het werken met frameworks om weergaveovergangen te implementeren . Dit is een basisimplementatie die controleert of de browser startViewTransition ondersteunt en zo ja, de overgang uitvoert. Anders wordt teruggevallen op het standaardgedrag.

const handleClick =
  ({ url, index }) =>
  () => {
    if ('startViewTransition' in document) { //check if browser supports VT
      document.startViewTransition(() => {
        flushSync(() => {
          setDisplayImage({ url, index });
          setActiveImageIndex(index);
        });
      });
    } else { //if VT is not supported, fall back to default behavior
      setDisplayImage({ url, index });
      setActiveImageIndex(index);
    }
  };

...

<Thumbnail onClick={handleClick({url, index})} />

Policybazaar

De beleggingssector van Policybazaar gebruikt de View Transition API voor helptips zoals 'waarom kopen'. Hierdoor zijn ze visueel aantrekkelijker geworden en worden de functies beter benut.

Door View Transitions te integreren, hebben we de repetitieve CSS- en JavaScript-code die verantwoordelijk is voor het beheer van animaties in verschillende statussen geëlimineerd. Dit bespaarde ontwikkeltijd en verbeterde de gebruikerservaring aanzienlijk . — Aman Soni , Tech Lead, Policybazaar .

Bekijk de animatie van de overgangen op de CTA 'Waarom kopen bij Policybazaar' op een beleggingspagina.

Code

De volgende code is vergelijkbaar met de vorige voorbeelden. Een ding om op te merken is de mogelijkheid om de standaardstijlen en animaties van ::view-transition-old(root) en ::view-transition-new(root) te overschrijven. In dit geval is de standaard animation-duration bijgewerkt naar 0,4 seconden.

togglePBAdvantagePopup(state: boolean) {
  this.showPBAdvantagePopup = state;

  if(!document.startViewTransition) {
    changeState();
    return;
  }

  document.startViewTransition(() => {changeState();});

  function changeState() {
    document.querySelector('.block_section').classList.toggle('hide');
    document.querySelector('.righttoggle_box').classList.toggle('show');
  }
}
.righttoggle_box{
  view-transition-name: advantage-transition;
}

.block_section{
  view-transition-name: advantage-transition;
}

::view-transition-old(root), ::view-transition-new(root) {
  animation-duration: 0.4s;
}

Waar u rekening mee moet houden bij het gebruik van de View Transition API

Wanneer u meerdere weergave-overgangseffecten op dezelfde pagina gebruikt, zorg er dan voor dat u voor elk effect of elke sectie een andere weergave-overgangsnaam gebruikt om conflicten te voorkomen.

Zolang een weergaveovergang actief is (transitie), wordt er een nieuwe laag toegevoegd bovenop de rest van de gebruikersinterface. Vermijd daarom het activeren van de overgang bij het bewegen van de muis, omdat de mouseLeave -gebeurtenis dan onverwacht wordt geactiveerd (wanneer de cursor nog niet beweegt).

Bronnen

Ontdek de andere artikelen in deze serie die gaan over hoe e-commercebedrijven profiteren van nieuwe CSS- en UI-functies zoals scroll-aangedreven animaties, popovers, containerquery's en de has() selector.