CSS, uygulamanızda güzel ve ilgi çekici animasyonlar oluşturmanız için güçlü bir araç seti sunar.
Yerel CSS'de animasyonlar nasıl yazılır
Daha önce yerel CSS animasyonları yazmadıysanız, başlangıç için bir dizi mükemmel rehber vardır. Bunlardan birkaçı: MDN CSS Animasyonları rehberi W3Schools CSS3 Animasyonları rehberi Eksiksiz CSS Animasyonları Eğitimi Yeni Başlayanlar İçin CSS Animasyonu
ve birkaç video: 9 Dakikada CSS Animasyonu Öğrenin Net Ninja CSS Animasyon Eğitimi Oynatma Listesi
Bu çeşitli rehber ve eğitimlerin bazılarına göz atın, ardından bu rehbere geri dönün.
Yeniden kullanılabilir animasyonlar oluşturma
@keyframes kullanarak uygulamanız genelinde paylaşabileceğiniz yeniden kullanılabilir animasyonlar oluşturabilirsiniz. Paylaşılmış bir CSS dosyasında anahtar kare animasyonları tanımlayın ve uygulamanızda istediğiniz her yerde bu anahtar kare animasyonlarını yeniden kullanabileceksiniz.
animations.css
@keyframes sharedAnimation {
to {
height: 0;
opacity: 1;
background-color: 'red';
}
}
.animated-class {
animation: sharedAnimation 1s;
}
animated-class sınıfını bir elemana eklemek, o eleman üzerinde animasyonu tetikler.
Bir geçişi animasyonlama
Durum ve stilleri animasyonlama
İki farklı durum arasında animasyon yapmak isteyebilirsiniz, örneğin bir eleman açıldığında veya kapatıldığında. Bunu anahtar kare animasyonu veya geçiş stili kullanarak CSS sınıflarıyla gerçekleştirebilirsiniz.
animations.css
.open {
height: '200px';
opacity: 1;
background-color: 'yellow';
transition: all 1s;
}
.closed {
height: '100px';
opacity: 0.8;
background-color: 'blue';
transition: all 1s;
}
open veya closed durumunu tetiklemek, bileşeninizdeki eleman üzerinde sınıfları değiştirerek yapılır. Bunu nasıl yapacağınıza dair örnekleri şablon rehberimizde bulabilirsiniz.
Stilleri doğrudan animasyonlama için şablon rehberinde benzer örnekler görebilirsiniz.
Geçişler, zamanlama ve yumuşatma
Animasyon genellikle zamanlama, gecikme ve yumuşaklık davranışlarını ayarlamayı gerektirir. Bu, birçok CSS özelliği veya kısayol özellikleri kullanılarak yapılabilir.
CSS'de bir anahtar kare animasyonu için animation-duration, animation-delay ve animation-timing-function belirtin veya alternatif olarak animation kısayol özelliğini kullanın.
animations.css
.example-element {
animation-duration: 1s;
animation-delay: 500ms;
animation-timing-function: ease-in-out;
}
.example-shorthand {
animation: exampleAnimation 1s ease-in-out 500ms;
}
Benzer şekilde, @keyframes kullanmayan animasyonlar için transition-duration, transition-delay, transition-timing-function ve transition kısayolunu kullanabilirsiniz.
animations.css
.example-element {
transition-duration: 1s;
transition-delay: 500ms;
transition-timing-function: ease-in-out;
transition-property: margin-right;
}
.example-shorthand {
transition: margin-right 1s ease-in-out 500ms;
}
Bir animasyonu tetikleme
Animasyonlar CSS stilleri veya sınıfları değiştirerek tetiklenebilir. Bir sınıf bir elemanda mevcut olduğunda, animasyon gerçekleşir. Sınıfı kaldırmak, elemanı o eleman için tanımlanmış CSS'e geri döndürecektir. İşte bir örnek:
Geçiş ve tetikleyiciler
Otomatik yüksekliği animasyonlama
Otomatik yüksekliğe animasyon yapmak için CSS Grid kullanabilirsiniz.
Tüm tarayıcıları destekleme konusunda endişelenmeniz gerekmiyorsa, otomatik yüksekliğe animasyon yapmanın gerçek çözümü olan calc-size()'i da inceleyebilirsiniz. Daha fazla bilgi için MDN belgelerine ve bu eğitime bakın.
Görünüme giriş ve çıkış animasyonu
Bir öğe görünüme girdiğinde veya görünümden ayrıldığında animasyonlar oluşturabilirsiniz. Bir elemanın görünüme girişini animasyonlamaya bakalım. Bunu, eleman görünüme girdiğinde animasyon sınıfları uygulayacak olan animate.enter ile yapacağız.
Bir elemanın görünümden ayrılırken animasyonlanması, görünüme girerken animasyonlamaya benzer. Eleman görünümden ayrılırken hangi CSS sınıflarının uygulanacağını belirtmek için animate.leave kullanın.
NOTE: Alt animate.leave animasyonları yalnızca aynı bileşen şablonu içinde tetiklenir. Bir üst eleman kaldırıldığında iç içe bileşenlerdeki animate.leave animasyonları tetiklenmez.
animate.enter ve animate.leave hakkında daha fazla bilgi için Giriş ve Çıkış animasyonları rehberine bakın.
Artırma ve azaltma animasyonu
Artırma ve azaltmada animasyon uygulamalarda yaygın bir kalıptır. Bu davranışı nasıl gerçekleştirebileceğinize dair bir örnek.
Bir animasyonu veya tüm animasyonları devre dışı bırakma
Belirttiğiniz animasyonları devre dışı bırakmak istiyorsanız, birden fazla seçeneğiniz vardır.
- Animasyon ve geçişi
noneolarak zorlayan özel bir sınıf oluşturun.
.no-animation {
animation: none !important;
transition: none !important;
}
Bu sınıfı bir elemana uygulamak, o eleman üzerindeki herhangi bir animasyonun çalışmasını engeller. Alternatif olarak, bu davranışı uygulamak için bunu tüm DOM'unuza veya DOM'unuzun bir bölümüne kapsayabilirsiniz. Ancak bu, animasyon olaylarının çalışmasını engeller. Eleman kaldırma için animasyon olaylarını bekliyorsanız, bu çözüm işe yaramaz. Geçici bir çözüm, süreleri 1 milisaniyeye ayarlamaktır.
Daha az animasyon tercih eden kullanıcılar için hiçbir animasyonun çalışmamasını sağlamak için
prefers-reduced-motionmedya sorgusunu kullanın.Programatik olarak animasyon sınıfları eklemeyi engelleyin
Animasyon geri çağırmaları
Animasyonlar sırasında belirli noktalarda yürütmek istediğiniz eylemleriniz varsa, dinleyebileceğiniz bir dizi mevcut olay vardır. Birkaçı:
OnAnimationStart
OnAnimationEnd
OnAnimationIteration
OnAnimationCancel
OnTransitionStart
OnTransitionRun
OnTransitionEnd
OnTransitionCancel
Web Animations API birçok ek işlev sunar. Mevcut tüm animasyon API'lerini görmek için belgelere göz atın.
NOTE: Bu geri çağırmalarla kabarcıklanma sorunlarına dikkat edin. Alt ve üst elemanları animasyonluyorsanız, olaylar alt elemanlardan üst elemanlara doğru kabarcıklanır. Bir alt düğümden kabarcıklanan bir olaya değil, istediğiniz olay hedefine yanıt verdiğinizden emin olmak için yayılımı durdurun veya olay içindeki daha fazla ayrıntı inceleyin. Doğru düğümlere sahip olduğunuzu doğrulamak için animationname özelliğini veya geçişi yapılan özellikleri inceleyebilirsiniz.
Karmaşık diziler
Animasyonlar genellikle basit bir fade in veya fade out'tan daha karmaşıktır. Çalıştırmak isteyeceğiniz birçok karmaşık animasyon dizisi olabilir. Bu olası senaryoların bazılarına göz atalım.
Listede kademeli animasyonlar
Yaygın efektlerden biri, kademeli bir etki oluşturmak için listedeki her öğenin animasyonlarını kademelileştirmektir. Bu, animation-delay veya transition-delay kullanılarak gerçekleştirilebilir. Bu CSS'nin nasıl görünebileceğine dair bir örnek.
Paralel animasyonlar
animation kısayol özelliğini kullanarak bir elemana aynı anda birden fazla animasyon uygulayabilirsiniz. Her birinin kendi süresi ve gecikmesi olabilir. Bu, animasyonları bir araya getirmenize ve karmaşık efektler oluşturmanıza olanak tanır.
.target-element {
animation:
rotate 3s,
fade-in 2s;
}
Bu örnekte, rotate ve fade-in animasyonları aynı anda başlar, ancak farklı sürelere sahiptir.
Yeniden sıralanan listenin öğelerini animasyonlama
Bir @for döngüsündeki öğeler kaldırılıp yeniden eklenecek, bu da giriş animasyonları için @starting-styles kullanılarak animasyonları tetikleyecektir. Alternatif olarak, aynı davranış için animate.enter kullanabilirsiniz. Aşağıdaki örnekte görüldüğü gibi elemanlar kaldırılırken animasyonlamak için animate.leave kullanın.
Animasyonların programatik kontrolü
Element.getAnimations() kullanarak bir elemandaki animasyonları doğrudan alabilirsiniz. Bu, o elemandaki her Animation'ın bir dizisini döndürür. Animasyon paketinin AnimationPlayer'inin sunduğu şeylerden çok daha fazlasını yapmak için Animation API'sini kullanabilirsiniz. Buradan cancel(), play(), pause(), reverse() ve çok daha fazlasını yapabilirsiniz. Bu yerel API, animasyonlarınızı kontrol etmeniz için ihtiyacınız olan her şeyi sağlamalıdır.
Angular animasyonları hakkında daha fazla bilgi
Aşağıdakilerle de ilgilenebilirsiniz: