Birden fazla animasyon efektinin animasyon kompozisyonuyla nasıl birleştirileceğini belirtin

Değiştir mi, ekle mi yoksa biriktir mi? Sorumuz bu.

Birden fazla animasyon efektini birleştirme

animation-composition özelliği, birden fazla animasyon aynı anda aynı özelliği etkilediğinde ne olacağının kontrol edilmesini sağlar.

Tarayıcı Desteği

  • 112
  • 112
  • 115
  • 16

Kaynak

Bir öğeye aşağıdaki temel dönüşümün uygulandığını varsayalım:

transform-origin: 50% 50%;
transform: translateX(50px) rotate(45deg);

Ayrıca şu animasyon karelerine de sahip olduğunuzu unutmayın:

@keyframes adjust {
  to {
    transform: translateX(100px);
  }
}

Bu animasyon kareleri bir öğeye uygulanırken to animasyon karesindeki transform, mevcut transform öğesinin yerini alır. Bu, varsayılan davranıştır.

animation-composition sayesinde, varsayılan replace yerine artık ne yapılacağını kontrol edebilirsiniz. Kabul edilen değerler şunlardır:

  • replace: Efekt değeri, temel değerin yerini alır. (varsayılan)
  • add: Efekt değeri, temel değere eklenir.
  • accumulate: Etki değeri, temel değerle birleştirilir.

Toplama ve birikim arasındaki fark çok belirgin değildir. Örneğin, blur(2) ve blur(3) değerlerini ele alalım. Bu sayı toplandığında blur(2) blur(3) elde edilir, ancak toplandığında blur(5) olur.

Bunu çayla dolu bir fincanla karşılaştırabilirsiniz. İçine süt dökerken şu durum gerçekleşir:

  • replace: Çay çıkarılıp sütle değiştirilir.
  • add: Süt bardağa eklenir ancak çayın üzerine katman olarak yerleştirilmiş olarak kalır.
  • accumulate: Süt çaya eklenir ve her ikisi de sıvı olduğundan iyi bir şekilde karışır.

Demo

Aşağıdaki demoda, transform ve animation tabanlarının uygulandığı üç gri kutu var.

Bu kutular aynı animasyona sahip olsalar da farklı animation-composition kümelerine sahip oldukları için farklı sonuçlar verirler:

İlk kutu animation-composition: replace değerine ayarlanmış. Bu, varsayılan davranıştır. Bitiş konumunda, transform için orijinal translateX(50px) rotate(45deg) değeri translateX(100px) ile değiştirilir.

İkinci kutu animation-composition: add olarak ayarlanmıştır. Bitiş konumunda translateX(100px), orijinal translateX(50px) rotate(45deg) öğesine eklenir ve translateX(50px) rotate(45deg) translateX(100px) sonucunu elde eder. Bu işlem, kutuyu 50 piksel hareket ettirir, ardından 45 derece döndürür ve ardından 100 piksel taşır.

Üçüncü kutu animation-composition: accumulate değerine ayarlandı. Bitiş konumunda translateX(100px), orijinal dönüşümden translateX(50px) öğesine matematiksel olarak eklenir ve translateX(150px) rotate(45deg) dönüşümü sonucu elde edilir.

Fotoğrafçı: Alex Boyd'un Unsplash'teki fotoğrafı