CSS dünyasında iki boyutlu düzlemde sıkışıp kalmak artık geçmişte kaldı. translateZ() fonksiyonu, web sayfalarınıza üçüncü bir boyut ekleyerek elementleri ekrana yaklaştırıp uzaklaştırmanıza olanak tanır. Bu sayede kullanıcılar, sayfada gezinirken derinlik algısı yaşar. Ancak bu fonksiyonun çalışması için mutlaka perspective özelliği veya perspective() fonksiyonu gereklidir; aksi halde herhangi bir görsel değişiklik olmaz.
translateZ() fonksiyonu tek bir parametre alır:. Pozitif değerler elementi kullanıcıya yaklaştırır, negatif değerler ise uzaklaştırır. Örneğin, transform: translateZ(100px); ifadesi elementi 100 piksel yaklaştırır. Bu işlem, elementin boyutunu değiştirmez; sadece perspektif projeksiyonu sayesinde daha büyük görünür. Bu nedenle scale() fonksiyonuyla karıştırılmamalıdır; ölçeklendirme farklı bir kavramdır.
Perspektif olmadan translateZ()'in hiçbir etkisi yoktur. perspective özelliği, bir sahneye derinlik kazandırarak tüm alt elementlerin 3D dönüşümlerini etkiler. Örneğin, .scene { perspective: 800px; } tanımı, sahneye 800 piksellik bir perspektif mesafesi verir. Ayrıca, alt elementlerin 3D uzayda doğru konumlanması için transform-style: preserve-3d özelliği de eklenmelidir. Bu sayede çocuk elementler, 3D dönüşümleri korur.
Perspektif uygulamanın iki yolu vardır: perspective özelliği (ebeveyne uygulanır) ve perspective() fonksiyonu (doğrudan elementin transform değerine eklenir). perspective() fonksiyonu, translateZ()'den önce yazılmalıdır; aksi halde çalışmaz. Örneğin, transform: perspective(800px) translateZ(100px); doğru kullanımdır. Bu fonksiyon, sadece bir elementi etkilerken, perspective özelliği tüm sahneye uygulanır.
translateZ()'in ilginç bir kullanımı da web performansını artırmaktır. translateZ(0) değeri, elementi 3D uzaya taşıyarak GPU hızlandırmasını etkinleştirir. Bu sayede animasyonlar daha akıcı hale gelir ve titreme (flicker) sorunları azalır. Özellikle karmaşık animasyonlarda CPU yükünü hafifletmek için bu yöntem sıkça kullanılır. Ancak gereksiz yere tüm elementlere uygulamak bellek kullanımını artırabilir.
Özetle, translateZ() fonksiyonu, CSS'de 3D derinlik yaratmak için güçlü bir araçtır. Doğru perspektif ayarlarıyla kullanıldığında, sayfalarınıza görsel bir zenginlik katar. Ayrıca performans iyileştirme amaçlı kullanımı da cabası. Modern tarayıcıların tam desteği sayesinde projelerinizde rahatlıkla kullanabilirsiniz. Unutmayın: perspektif olmadan translateZ() sadece bir hayaldir.
Kaynak: css-tricks.com