Transisi tampilan adalah transisi yang dianimasikan dan lancar antara berbagai status UI aplikasi atau halaman web. View Transition API telah didesain untuk memungkinkan Anda membuat efek ini dengan cara yang lebih mudah dan berperforma tinggi daripada yang mungkin dilakukan sebelumnya. API ini menawarkan beberapa manfaat dibandingkan pendekatan JavaScript sebelumnya, termasuk:
- Pengalaman pengguna yang ditingkatkan: Transisi yang lancar dan isyarat visual memandu pengguna melalui perubahan UI, sehingga navigasi terasa alami dan tidak terlalu mengganggu.
- Kontinuitas visual: Menjaga rasa kontinuitas antar-tampilan mengurangi beban kognitif dan membantu pengguna tetap berorientasi dalam aplikasi.
- Performa: API mencoba menggunakan sesedikit mungkin resource thread utama untuk membuat animasi yang lebih lancar.
- Estetika modern: Transisi yang ditingkatkan berkontribusi pada pengalaman pengguna yang lancar dan menarik.
Postingan ini adalah bagian dari seri yang membahas cara perusahaan e-commerce meningkatkan kualitas situs mereka menggunakan fitur CSS dan UI baru. Dalam artikel ini, temukan cara beberapa perusahaan menerapkan dan mendapatkan manfaat dari View Transition API.
redBus
redBus selalu berupaya menciptakan kesamaan sebanyak mungkin antara pengalaman web dan aplikasi native mereka. Sebelum View Transition API, penerapan animasi ini di aset web kami cukup sulit. Namun, dengan API, kami merasa intuitif untuk membuat transisi di beberapa perjalanan pengguna guna membuat pengalaman web lebih mirip aplikasi. Semua ini, ditambah dengan manfaat performa, menjadikannya fitur yang wajib dimiliki semua situs.—Amit Kumar, Senior Engineering Manager, redBus.
Tim telah menerapkan transisi tampilan di beberapa tempat. Berikut contoh kombinasi animasi memudar dan geser pada ikon login di halaman beranda.
Kode
Implementasi ini menggunakan beberapaview-transition-namedan animasi kustom
(scale-downdan scale-up). Menggunakan view-transition-name dengan nilai unik
memisahkan komponen login dari halaman lainnya untuk menganimasikannya
secara terpisah. Membuat view-transition-name unik baru juga akan membuat
::view-transition-groupbaru di hierarki elemen semu (ditampilkan dalam
kode berikut), sehingga dapat dimanipulasi secara terpisah dari
::view-transition-group(root) default.
::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