27 puan yazan xguru 2023-03-20 | Henüz yorum yok. | WhatsApp'ta paylaş

Düşündüğünüzden daha kısa tutun

  • Tek bir geçiş için 0.15~0.4 saniye
  • Fazla hızlı geldiğini düşüneceğiniz noktaya kadar hızlandırın, sonra biraz biraz geri alın

Aksiyonu eğriye uydurun

  • Hareket de renk kadar öznel ama en az onun kadar önemli
  • Gerçek dünyadaki hareketi düşünün ve onunla karşılaştırın

Hızlanma ve yavaşlama

  • Animasyon doğal görünmüyorsa, nedeni aniden başlaması ya da bitmesidir
  • Çok hafif olsa bile cubic-bezier eğrisine easing-in/out eklemek iyidir
  • Daha gerçekçi görünmesi için "atalet (inertia)" de işe yarar

Az, daha iyidir

  • Animasyon sırasında bir elementte ne kadar çok şey değişirse, o kadar abartılı görünme riski artar
  • Opaklık 0'dan 1'e gidiyorsa 1 yerine 0.4'ü deneyin. Boyutu değiştiriyorsanız, biraz daha küçük bir boyuttan başlamayı deneyin
  • Çoğu durumda bir elementin yerine oturduğu animasyonlar 5~40 piksel aralığında hareket etmelidir

Tarayıcı varsayılanlarından kaçının

  • Tarayıcılarda linear, ease, ease-in, ease-out, ease-in-out gibi yerleşik eğriler vardır
  • Rahattırlar ve bazı durumlarda kullanışlıdırlar, ama fazla genel oldukları için her şey aynı görünür (tıpkı Bootstrap/Tailwind ile yapılmış sitelerin birbirine benzemesi gibi)
  • VS Code içindeki cubic-bezier eğrisi otomatik tamamlama değerlerini deneyin
  • Ya da tarayıcı geliştirici araçlarını açıp eğri düzenleyicisini kullanın

Birden fazla özellik, birden fazla easing

  • Her zaman gerekli değildir, ama birden fazla özelliği aynı anda değiştirmeniz gerektiğinde (transform ve opacity gibi)
    • Aynı cubic-bezier eğrisini uygulamak bazen iyi görünebilir, ama pratikte her zaman öyle olmayabilir
    • transform için iyi çalışan bir eğri, fade için o kadar uygun olmayabilir
    • Böyle durumlarda CSS özelliğine göre farklı easing seçmek daha iyidir
  • Özelliklere göre @keyframes animasyonlarını ayırabilir ya da birden fazla transition tanımlayabilirsiniz
    • opacity için linear, transform için cubic-bezier(.5, 0, .5, 1)

Kademeli gecikme kullanın

  • Birden fazla elementi geçişe sokarken animation-delay veya transition-delay etkisini küçümsemeyin

In dışarı çıkar, Out içeri girer

  • Easing eğrilerinin üç türü vardır
    • ease in (yavaş başlar)
    • ease out (yavaş biter)
    • in-out (yalnızca ortası hızlıdır, başta ve sonda yavaştır)
  • Geçişlerin zor tarafı şu ki, bazen in için ease-out, out için ise ease-in isteyebilirsiniz
    • Biri çıkarken diğerinin girdiği animasyonlar kullanıcı açısından tek bir geçiş gibi görünür, ama içeride aslında iki ayrı geçiş vardır
    • Çıkan şeyin yavaşça gitmesini istediğiniz için ease-in gerekir, giren şeyin ise ease-out olması gerekir

Donanım hızlandırmasına güvenin

  • Tüm CSS özellikleri her cihaz ve tarayıcıda akıcı çalışmaz
  • Her zaman donanım hızlandırmalı çalışabilen özellikler
    • transform (tüm translate, scale, rotate ve 3D sürümleri dahil)
    • opacity
  • Bazı durumlarda donanım hızlandırmalı olabilen özellikler
    • bazı SVG özellikleri
    • filter (tarayıcıya ve filtreye bağlı olarak)
  • Canvas ve WebGL de donanım hızlandırmalıdır, ama burada ele alınmıyor
  • Yani taşıma, yeniden boyutlandırma ve döndürme için her zaman CSS transform özelliğini kullanın
  • Ne yaparsanız yapın, elementin boyutunu ya da konumunu doğrudan değiştirmeyin
    • height, width, border, margin, padding gibi sayfa yerleşimini etkileyen özellikleri doğrudan değiştirirseniz, sayfa hızının fark edilir biçimde yavaşlama riski vardır

Gerektiğinde will-change kullanın

  • Teoride animasyon akıcı ve performanslı olması gerekirken doğal görünmüyorsa will-change özelliğini kullanın
  • Ne değişeceğini önceden bildirdiği için, bazı başka hesaplamalar atlanabilir

Bonus: kullanıcının tercihine saygı gösterin

  • Kullanıcılar cihaz ayarlarında "reduced motion" tercih ettiklerini belirtebilir
  • Media query kullanarak ya da JavaScript üzerinden bu değeri algılayıp buna uygun davranabilirsiniz

Henüz yorum yok.

Henüz yorum yok.