पब्लिश करने की तारीख: 16 मई, 2024
Google I/O 2024 में, मैंने व्यू ट्रांज़िशन के अगले चरण का एलान किया था: मल्टी-पेज ऐप्लिकेशन (एमपीए) के लिए, क्रॉस-दस्तावेज़ व्यू ट्रांज़िशन.
इसके अलावा, मैंने कुछ सुधारों के बारे में भी बताया है. इनकी मदद से, आपको व्यू ट्रांज़िशन को आसानी से इस्तेमाल करने में मदद मिलेगी.
view-transition-class
की मदद से, व्यू ट्रांज़िशन के सूडो-एलिमेंट के बीच ऐनिमेशन स्टाइल शेयर करना.- ऐक्टिव टाइप के साथ चुनिंदा व्यू ट्रांज़िशन.
ये सुधार, सिंगल-पेज ऐप्लिकेशन (एसपीए) के लिए एक ही दस्तावेज़ के व्यू ट्रांज़िशन और एमपीए के लिए अलग-अलग दस्तावेज़ के व्यू ट्रांज़िशन, दोनों पर लागू होते हैं.
एमपीए के लिए, एक दस्तावेज़ से दूसरे दस्तावेज़ पर व्यू ट्रांज़िशन
ब्राउज़र के इस्तेमाल से जुड़ी सहायता
Chrome 111 में, Chrome की टीम ने एक पेज वाले ऐप्लिकेशन के लिए, एक ही दस्तावेज़ के व्यू ट्रांज़िशन की सुविधा लॉन्च की थी. यह सुविधा, वेब बिल्डिंग कम्यूनिटी में काफ़ी लोकप्रिय हुई.
हमें यह देखकर खुशी हो रही है कि आपमें से कई लोगों ने व्यू ट्रांज़िशन की मदद से क्या-क्या बनाया है. इनमें, "थंबनेल को बड़ी फ़ोटो में बदलने" जैसे सामान्य तरीके से लेकर, Airbnb के इस तरह के शानदार अनुभव शामिल हैं. शानदार!
हालांकि, शुरुआती लागू करने के लिए, आपको व्यू ट्रांज़िशन का इस्तेमाल करने के लिए एसपीए बनाना होगा. Chrome 126 के बाद, ऐसा नहीं होता. अब एक ही ऑरिजिन वाले नेविगेशन के लिए, व्यू ट्रांज़िशन डिफ़ॉल्ट रूप से चालू होते हैं. अब एक ही ऑरिजिन वाले दो अलग-अलग दस्तावेज़ों के बीच व्यू ट्रांज़िशन बनाया जा सकता है.
एक दस्तावेज़ से दूसरे दस्तावेज़ पर स्विच करने की सुविधा चालू करने के लिए, दोनों दस्तावेज़ों के लिए ऑप्ट-इन करना ज़रूरी है. ऐसा करने के लिए, @view-transition
at-rule का इस्तेमाल करें और navigation
डिस्क्रिप्टर को auto
पर सेट करें.
@view-transition {
navigation: auto;
}
एक दस्तावेज़ से दूसरे दस्तावेज़ में व्यू ट्रांज़िशन करने के लिए, बिल्डिंग ब्लॉक और सिद्धांतों का इस्तेमाल उसी तरह किया जाता है जिस तरह एक ही दस्तावेज़ में व्यू ट्रांज़िशन करने के लिए किया जाता है. view-transition-name
लागू किए गए एलिमेंट कैप्चर किए जाते हैं. साथ ही, सीएसएस ऐनिमेशन का इस्तेमाल करके, ऐनिमेशन को पसंद के मुताबिक बनाया जा सकता है.
अलग-अलग दस्तावेज़ों के व्यू ट्रांज़िशन को पसंद के मुताबिक बनाने के लिए, pageswap
और pagereveal
इवेंट का इस्तेमाल करें. इनसे आपको व्यू ट्रांज़िशन ऑब्जेक्ट का ऐक्सेस मिलता है.
pageswap
की मदद से, पुराने स्नैपशॉट लेने से ठीक पहले, आउटगोइंग पेज पर आखिरी समय में कुछ बदलाव किए जा सकते हैं.pagereveal
का इस्तेमाल करके, नए पेज को शुरू होने के बाद रेंडर होने से पहले पसंद के मुताबिक बनाया जा सकता है.
दोनों इवेंट में, आपके पास NavigationActivation
ऑब्जेक्ट का ऐक्सेस होता है. इसकी मदद से, पुराने और नए डेस्टिनेशन इतिहास की एंट्री या नेविगेशन टाइप के आधार पर, क्रॉस-डॉक्यूमेंट व्यू ट्रांज़िशन को पसंद के मुताबिक बनाया जा सकता है.
इसके अलावा, रेंडर ब्लॉकिंग की मदद से कॉन्टेंट लोड होने का इंतज़ार किया जा सकता है. साथ ही, व्यू ट्रांज़िशन शुरू होने से पहले लोडिंग के समय को बेहतर बनाने के लिए, पहले से रेंडर करने की सुविधा का इस्तेमाल किया जा सकता है.
से चालू किया जा सकता है.डेमो
स्टैक नेविगेटर के इस डेमो में, इन सभी सुविधाओं के साथ-साथ कुछ सुधार भी शामिल हैं.
यह एक एमपीए है, जिसमें एक ही ऑरिजिन पर होस्ट किए गए क्रॉस-दस्तावेज़ नेविगेशन हैं. pagereveal
का इस्तेमाल करके, डेस्टिनेशन के इतिहास की पुरानी और नई एंट्री के आधार पर ऐनिमेशन का टाइप तय किया जाता है.
window.addEventListener("pagereveal", async (e) => {
if (e.viewTransition) {
// Determine animation type based on the old/new history entries
const transitionClass = determineTransitionClass(navigation.activation.from, navigation.currentEntry);
document.documentElement.dataset.transition = transitionClass;
// Cleanup after transition ran
await e.viewTransition.finished;
delete document.documentElement.dataset.transition;
}
});
दस्तावेज़ पढ़ें
एक दस्तावेज़ से दूसरे दस्तावेज़ पर स्विच करने के दौरान दिखने वाले ट्रांज़िशन को चालू करने और पसंद के मुताबिक बनाने के तरीके के बारे में ज़्यादा जानने के लिए, एक दस्तावेज़ से दूसरे दस्तावेज़ पर स्विच करने के दौरान दिखने वाले ट्रांज़िशन के बारे में हमारा दस्तावेज़ देखें.
ट्रांज़िशन में हुए सुधार देखना
एमपीए के लिए, एक दस्तावेज़ से दूसरे दस्तावेज़ में व्यू ट्रांज़िशन करने की सुविधा के अलावा, Chrome में व्यू ट्रांज़िशन के साथ काम करने के लिए कुछ बेहतर सुविधाएं भी शामिल की गई हैं.
ये सुधार, एसपीए के लिए एक ही दस्तावेज़ के व्यू ट्रांज़िशन और एमपीए के लिए अलग-अलग दस्तावेज़ के व्यू ट्रांज़िशन, दोनों पर लागू होते हैं.
view-transition-class
के साथ ऐनिमेशन स्टाइल शेयर करना
ब्राउज़र के इस्तेमाल से जुड़ी सहायता
अब तक, एक ही तरह से कई स्नैपशॉट को ऐनिमेट करते समय, आपको हर स्नैपशॉट को अलग-अलग टारगेट करना पड़ता था. इसके लिए, आपको हर उस एलिमेंट के लिए उसका सूडो-सिलेक्टर दोहराना पड़ता था जिसमें यूनीक view-transition-name
होता था.
view-transition-class
की मदद से, अब सभी स्नैपशॉट में शेयर किया गया नाम जोड़ा जा सकता है. मैच होने वाले सभी स्नैपशॉट को टारगेट करने के लिए, सूडो सिलेक्टर में इस शेयर किए गए नाम का इस्तेमाल करें. इससे, बहुत आसान सिलेक्टर बनते हैं, जो एक से कई एलिमेंट पर अपने-आप स्केल हो जाते हैं.
#cards-wrapper > div {
view-transition-class: card;
}
html::view-transition-group(.card) {
animation-timing-function: var(--bounce);
}
यहां दिए गए कार्ड के उदाहरण में, view-transition-class
का इस्तेमाल करके एक ही ऐनिमेशन टाइमिंग को कई स्नैपशॉट पर लागू किया गया है. इसके लिए, एक सिलेक्टर का इस्तेमाल किया गया है.
view-transition-class
के बारे में ज़्यादा जानने के लिए, view-transition-class
के बारे में खास तौर पर तैयार किया गया दस्तावेज़ पढ़ें.
ऐक्टिव टाइप के साथ चुनिंदा व्यू ट्रांज़िशन
ब्राउज़र के इस्तेमाल से जुड़ी सहायता
व्यू ट्रांज़िशन को बेहतर बनाने के लिए, अब व्यू ट्रांज़िशन को कैप्चर और इस्तेमाल करते समय, उसमें टाइप जोड़े जा सकते हैं. इससे, एक ही पेज पर अलग-अलग व्यू ट्रांज़िशन के साथ काम करना आसान हो जाता है. साथ ही, एक के बदलने से दूसरे के एलान नहीं होते.
उदाहरण के लिए, पेजेशन क्रम में अगले या पिछले पेज पर जाने पर, हो सकता है कि आप अलग-अलग ऐनिमेशन का इस्तेमाल करना चाहें. यह इस बात पर निर्भर करता है कि आपको क्रम में ऊपर वाले पेज पर जाना है या नीचे वाले पेज पर.
ऐक्टिव टाइप से पहले, डीओएम में क्लास जोड़ी जा सकती थीं और अपनी सीएसएस में उन क्लास का जवाब दिया जा सकता था. हालांकि, ट्रांज़िशन पूरा होने के बाद, आपको क्लीनअप भी करना होगा.
व्यू ट्रांज़िशन टाइप की मदद से भी यही नतीजा मिल सकता है. साथ ही, व्यू ट्रांज़िशन खत्म होने के बाद, इन टाइप की जानकारी अपने-आप मिट जाती है. टाइप सिर्फ़ तब लागू होते हैं, जब ट्रांज़िशन कैप्चर किया जा रहा हो या किया जा रहा हो.
एक ही दस्तावेज़ के व्यू के ट्रांज़िशन के लिए, types
को startViewTransition
मैथड में पास करें. यह मैथड अब ऑब्जेक्ट स्वीकार करता है. update
एक कॉलबैक फ़ंक्शन है, जो डीओएम को अपडेट करता है. वहीं, types
स्ट्रिंग का क्रम है.
const direction = determineBackwardsOrForwards();
const t = document.startViewTransition({
update: updateTheDOMSomehow,
types: ['slide', direction],
}););
क्रॉस-दस्तावेज़ व्यू ट्रांज़िशन के लिए, types
डिस्क्रिप्टर का इस्तेमाल करके @view-transition
at-rule में टाइप सेट करें या उन्हें pageswap
और pagereveal
इवेंट में फ़्लाइट पर सेट करें.
@view-transition {
navigation: auto;
types: slide, forwards;
}
टाइप सेट होने के बाद, :active-view-transition-type()
और :active-view-transition
स्यूडो-क्लास सिलेक्टर का इस्तेमाल करके, अपनी सीएसएस में इन टाइप का जवाब दिया जा सकता है. ये सिलेक्टर, व्यू ट्रांज़िशन रूट पर लागू होते हैं.
/* Animation styles for forwards type only */
html:active-view-transition-type(forwards) {
&::view-transition-old(content) {
animation-name: slide-out-to-left;
}
&::view-transition-new(content) {
animation-name: slide-in-from-right;
}
}
व्यू ट्रांज़िशन टाइप के बारे में ज़्यादा जानने के लिए, एक ही दस्तावेज़ के व्यू ट्रांज़िशन और अलग-अलग दस्तावेज़ों के व्यू ट्रांज़िशन के लिए बने दस्तावेज़ देखें.
सुझाव/राय दें या शिकायत करें
डेवलपर के सुझाव, शिकायत या राय का हमेशा स्वागत है. ऐसा करने के लिए, GitHub पर सीएसएस वर्किंग ग्रुप के साथ कोई समस्या दर्ज करें. इसमें सुझाव और सवाल शामिल करें. अपनी समस्या के आगे [css-view-transitions]
जोड़ें.
अगर आपको कोई गड़बड़ी मिलती है, तो Chromium में गड़बड़ी की शिकायत करें.