Yayınlanma tarihi: 8 Ekim 2025
2023'te aynı dokümanda görünüm geçişlerini kullanıma sunduğumuzdan beri çok şey değişti.
2024'te belgeler arası görünüm geçişlerini kullanıma sunduk, view-transition-class
ve görünüm geçişi türleri gibi iyileştirmeler ekledik. Ayrıca Safari'nin görünüm geçişleri desteği eklemesini memnuniyetle karşıladık.
Bu yayında, 2025'te görünüm geçişleriyle ilgili nelerin değiştiğine dair genel bir bakış sunulmaktadır.
Daha iyi tarayıcı ve çerçeve desteği
Aynı doküman görünümü geçişleri, Baseline Newly available olarak kullanıma sunulacak
Interop 2025'in odak alanlarından biri, View Transition API'dir. Bu API'de özellikle document.startViewTransition(updateCallback)
ve view-transition-class
ile aynı belge görünümü geçişleri, view-transition-name: match-element
ile otomatik adlandırma ve :active-view-transition
CSS seçici yer alır.
Firefox, bu özellikleri 14 Ekim 2025'te kararlı hale gelecek olan Firefox 144 sürümüne dahil etmeyi planlıyor. Bu işlem, söz konusu özellikleri yeni kullanılabilir temel düzey özellikler haline getirir.
View Transition API desteği artık React çekirdeğinde
React ekibi, yıl boyunca görünüm geçişlerini React'in çekirdeğine eklemek için çalıştı. Nisan ayında desteği duyurmuşlardıreact@experimental
ve bu hafta React Conf'ta desteği react@canary
'a taşıdılar. Bu da tasarımın son haline yakın olduğu anlamına geliyor.
function Child() {
return (
<ViewTransition>
<div>Hi</div>
</ViewTransition>
);
}
function Parent() {
const [show, setShow] = useState();
if (show) {
return <Child />;
}
return null;
}
Tüm ayrıntılar için React'in <ViewTransition>
dokümanlarına göz atabilir veya konuyla ilgili iyi bir giriş için Aurora Scharff'ın bu konuşmasını izleyebilirsiniz.
Yakın zamanda kullanıma sunulan özellikler
view-transition-name: match-element
ile öğeleri otomatik olarak adlandırma
Browser Support
Görünüm geçişinin bir parçası olarak anlık görüntüsü alınacak bir öğeyi işaretlemek için öğeye view-transition-name
ekleyin. Bu, iki farklı öğe arasında geçiş yapma gibi özellikleri etkinleştirdiği için görünüm geçişleri açısından çok önemlidir. Her öğe, geçişin her iki tarafında da aynı view-transition-name
değerine sahiptir ve görünüm geçişleri sizin için her şeyi halleder.
Ancak, çok fazla öğeyi, gerçekten değişmeyen öğeleri geçiş yaparken öğeleri benzersiz şekilde adlandırmak zahmetli olabilir. Bir listede 100 öğe taşıyorsanız 100 benzersiz ad bulmanız gerekir.
match-element
sayesinde tüm bunları yapmanız gerekmez. Bu, view-transition-name
için değer olarak kullanıldığında tarayıcı, öğenin kimliğine göre eşleşen her öğe için dahili bir view-transition-name
oluşturur.
Bu yaklaşım aşağıdaki demoda kullanılmıştır. Satırdaki her karta otomatik olarak oluşturulan bir view-transition-name
eklenir.
.card {
view-transition-name: match-element;
view-transition-class: card;
}
#targeted-card {
view-transition-name: targeted-card;
view-transition-class: none;
}
Giriş veya çıkış yapan kart açık bir ad alır. Bu ad, CSS'de belirli animasyonları bu anlık görüntüye eklemek için kullanılır. Diğer tüm kartların anlık görüntüleri, kendileriyle ilişkili view-transition-class
kullanılarak şekillendirilir.
/* Style all pseudos with the class .card */
::view-transition-group(*.card) {
animation-timing-function: var(--bounce-easing);
animation-duration: 0.5s;
}
/* Style only the targeted-card's pseudos */
::view-transition-old(targeted-card):only-child {
animation: animate-out ease-out 0.5s forwards;
}
::view-transition-new(targeted-card):only-child {
animation: animate-in ease-in 0.25s forwards;
}
Geliştirici Araçları artık view-transition-class
kullanan sözde öğeleri hedefleyen kuralları gösteriyor
Görünüm geçişlerinde hata ayıklamak için Geliştirici Araçları'ndaki Animasyonlar panelini kullanarak tüm animasyonları duraklatabilirsiniz. Bu sayede, görünüm geçişinin tamamlanmış duruma ulaşacağından endişelenmeden sözde öğeleri inceleyebilirsiniz. Geçişlerin nasıl gerçekleştiğini görmek için animasyonun zaman çizelgelerinde manuel olarak da gezinebilirsiniz.
Daha önce, ::view-transition-*
sözde öğelerinden biri incelenirken Chrome Geliştirici Araçları, kendi view-transition-class
kümesi kullanılarak sözde öğeleri hedefleyen kuralları göstermiyordu. Bu durum, işlevin eklendiği Chrome 139'da değişti.

view-transition-group
sözde öğesini inceleyen Chrome Geliştirici Araçları'nın ekran görüntüsü. Stiller sekmesinde, view-transition-group(*.card)
seçicisini kullanan kural da dahil olmak üzere bu sözdeyi etkileyen kurallar gösterilir.İç içe görünüm geçişi grupları Chrome 140'tan itibaren kullanılabilir.
Browser Support
Görünüm geçişi çalıştırıldığında, anlık görüntüsü alınan öğeler sahte öğeler ağacında oluşturulur. Oluşturulan ağaç varsayılan olarak "düz" olur. Bu durumda, DOM'daki orijinal hiyerarşi kaybolur ve yakalanan tüm görünüm geçişi grupları tek bir ::view-transition
sözde öğesi altında kardeş öğeler olur.
Bu düz ağaç yaklaşımı birçok kullanım alanı için yeterli olsa da kırpma veya 3D dönüştürme gibi görsel efektler kullanıldığında sorunlu hale gelir. Bunlar, ağaçta belirli bir hiyerarşi gerektirir.
"İç içe görünüm geçişi grupları" sayesinde artık ::view-transition-group
sözde öğelerini iç içe yerleştirebilirsiniz. Görünüm geçişi grupları iç içe yerleştirildiğinde, geçiş sırasında kırpma gibi efektleri geri yüklemek mümkündür.
Görünüm geçişi gruplarını nasıl kullanacağınızı öğrenin.
Sözde öğeler artık daha fazla animasyon özelliğini devralıyor
Bir ::view-transition-group(…)
sözde öğesinde animation-*
uzun el yazısı özelliklerinden birini ayarladığınızda, kapsanan ::view-transition-image-pair(…)
, ::view-transition-old(…)
ve ::view-transition-new(…)
de bu özelliği devralır. Bu özellik, ::view-transition-new(…)
ve ::view-transition-old(…)
arasındaki geçişi ::view-transition-group(…)
ile otomatik olarak senkronize ettiği için kullanışlıdır.
::view-transition-group(.card) {
animation-duration: 0.5s;
}
Başlangıçta bu devralma animation-duration
ve animation-fill-mode
ile sınırlıydı (daha sonra animation-delay
de eklendi) ancak şimdi daha fazla animasyon uzun el yazısını devralacak şekilde genişletildi.
Görünüm geçişlerini destekleyen tarayıcılar artık kullanıcı aracısı stil sayfalarında aşağıdakilere sahip olmalıdır.
:root::view-transition-image-pair(*),
:root::view-transition-old(*),
:root::view-transition-new(*) {
animation-duration: inherit;
animation-fill-mode: inherit;
animation-delay: inherit;
animation-timing-function: inherit;
animation-iteration-count: inherit;
animation-direction: inherit;
animation-play-state: inherit;
}
Daha fazla özellik devralan sözde öğeler, Chrome 140'ta kullanıma sunuldu.
finished
sözü geri çağırmasının yürütülmesi artık bir çerçeve beklemiyor
Chrome, finished
geri çağırma işlevini yürütme sözünü kullanırken bu mantığı yürütmeden önce bir çerçevenin oluşturulmasını beklerdi. Bu durum, komut dosyası görsel olarak benzer bir durumu korumak için bazı stilleri hareket ettirirken animasyonun sonunda titremeye neden olabilir.
document.startViewTransition(() => {
if (from) {
dfrom.classList.remove("shadow");
dto.appendChild(target);
} else {
dto.classList.remove("shadow");
dfrom.appendChild(target);
}
}).finished.then(() => {
if (from) {
dto.classList.add("shadow");
} else {
dfrom.classList.add("shadow");
}
from = 1 - from;
});
Zamanlamadaki bu değişiklik, görünüm geçişi temizleme adımlarını yaşam döngüsü tamamlandıktan sonra eşzamansız olarak çalışacak şekilde taşıyarak durumu düzeltir. Bu sayede, finished
vaat edilen çözünürlükte üretilen görsel çerçeve, görünüm geçişi yapısını korumaya devam eder ve titreşimi önler.
Bu zamanlama değişikliği Chrome 140'ta kullanıma sunuldu.
Yakında kullanıma sunulacak özellikler
Yıl henüz bitmediği için bazı özellikleri kullanıma sunmak için biraz daha zamanımız var.
Kapsamlı görünüm geçişleri, Chrome 140'ta test edilmeye hazır
Kapsamlı görünüm geçişleri, View Transition API'nin önerilen bir uzantısıdır. Bu uzantı, herhangi bir HTMLElement
üzerinde document.startViewTransition()
yerine element.startViewTransition()
çağırarak DOM'un bir alt ağacında görünüm geçişi başlatmanıza olanak tanır.
Kapsamlı geçişler, farklı geçiş köklerine sahip oldukları sürece birden fazla görünüm geçişinin aynı anda çalışmasına olanak tanır. İşaretçi etkinlikleri, dokümanın tamamında değil, yalnızca söz konusu alt ağaçta engellenir (yeniden etkinleştirebilirsiniz). Ayrıca, geçiş kökünün dışındaki öğelerin, kapsamlı görünüm geçişinin üzerine çizilmesine izin verirler.
Aşağıdaki demoda, düğmelerden birini tıklayarak bir noktayı kapsayıcısı içinde hareket ettirebilirsiniz. Bu, doküman kapsamlı veya öğe kapsamlı görünüm geçişleriyle yapılabilir. Böylece, bunların nasıl farklı davrandığını görebilirsiniz.
Bu özellik, chrome://flags
bölümünde "Deneysel Web Platformu özellikleri" işareti etkinleştirilmiş olarak Chrome 140'tan itibaren test edilmeye hazırdır. Geliştiricilerden geri bildirim almak için çalışmalarımızı sürdürüyoruz.
::view-transition
konumunun Chrome 142'de fixed
yerine absolute
olarak değiştirilmesi
::view-transition
sözde öğesi şu anda position: fixed
kullanılarak konumlandırılıyor. CSS Çalışma Grubu'nun kararı uyarınca bu değer position: absolute
olarak değişecektir.
Chrome 142'de kullanıma sunulacak olan bu position
değerinin fixed
'den absolute
'e değişimi, ::view-transition
sözde öğesinin kapsayan bloğu zaten anlık görüntü kapsayan blok olduğundan görsel olarak gözlemlenemez. Gözlemlenebilen tek etki, getComputedStyle
işlemi yapılırken farklı bir position
değeridir.
document.activeViewTransition
, Chrome 142'ye geliyor
Görünüm geçişi başlatıldığında bir ViewTransition
örneği oluşturulur. Bu nesne, geçiş ilerlemesini izlemek için çeşitli sözler ve işlevlerin yanı sıra geçişi atlama veya türlerini değiştirme gibi manipülasyonlara izin verir.
Chrome artık bu örneği manuel olarak takip etmenizi gerektirmek yerine bu nesneyi temsil eden bir document.activeViewTransition
özelliği sunuyor. Devam eden bir geçiş yoksa değeri null
olur.
Aynı dokümanda görünüm geçişleri için değer, document.startViewTransition
çağrıldığında ayarlanır. Dokümanlar arası görünüm geçişleri için ViewTransition
örneğine pageswap
ve pagereveal
etkinliklerinde erişebilirsiniz.
document.activeViewTransition
desteği Chrome 142'de kullanıma sunulacak.
ViewTransition.waitUntil
ile görünüm geçişinin otomatik olarak tamamlanmasını önleme
Görünüm geçişi, tüm animasyonları tamamlandığında otomatik olarak finished
durumuna ulaşır. Bu otomatik tamamlamayı önlemek için yakında ViewTranistion.waitUntil
simgesini kullanabilirsiniz. Bir söz geçirilirken ViewTransition
, yalnızca geçirilen söz de çözüldüğünde finished
durumuna ulaşır.
const t = document.startViewTransition(…);
t.waitUntil(async () => {
await fetch(…);
});
Bu değişiklik, yılın ilerleyen dönemlerinde kullanıma sunulacak ve örneğin fetch
beklemeye veya kaydırmaya dayalı görünüm geçişinin daha kolay uygulanmasına olanak tanıyacak.
Sırada ne var?
2023'te ilk kez sunduğumuz görünüm geçişleri özelliğinden bu yana boş durmadığımızı görebilirsiniz. Gelecekte kapsamlı görünüm geçişlerini kullanıma sunmayı dört gözle bekliyoruz. Her zaman olduğu gibi geri bildirimlerinizi bekliyoruz.
Görünüm geçişleriyle ilgili sorularınız varsa sosyal medyada bize ulaşabilirsiniz. Görünüm geçişleriyle ilgili özellik istekleri CSS WG'ye gönderilebilir. Bir hatayla karşılaşırsanız Chromium hata bildiriminde bulunarak durumu bize bildirin.