Merhaba..
CSS ile animasyonlar hazırlayabiliyoruz.. Tasarım içerisinde kullanılabilen basit buton animasyonları yapılabildiği gibi, daha gelişmiş animasyonlarda hazırlanabiliyor..
CSS ile animasyon hazırlanırken @KEYFRAMES metodundan yararlanıyoruz.. Keyframes, anahtar kareler anlamına gelir. Animasyon süresi içerisinde her an bir karedir. Keyframes ile ismi belirtilen animasyon içerisinde tüm CSS özellikkeri değiştirilebilir..
Animasyon içeriği (animasyonda olacak değişimler de diyebiliriz) iki şekilde oluşturulabilir;
Yüzdelik dilimler ile yapılan animasyon içerikleri , daha esnek ve daha gelişmiş animasyonlar oluşturulmasını sağlar.. 0 - 100 arasında istenildiği kadar ara kare (animasyon an'ı) belirtilebilir..
Her iki yapıdada, animasyon uygulanacak elemanın alacağı CSS özellikleri belirtilir. Örneğin arkaplan rengi başta kırmızı iken , sarıya dönüşmesi , sol konumlandırması başta 0 iken , 100% sağa gitmesi , şekil değişiklikleri vs gibi..
@keyframes hareket {
from {margin-left:0; }
to {margin-left: 200px }
}
/* yada */
@keyframes hareket {
0% {margin-left:0; }
100% {margin-left: 200px }
}
Yukarıda, ilk durumda 0 olan margin-left değeri, son durumda 200px olacaktır. Ekranda , aşağıda belirtilecek animasyon süresinde eleman soldan 200px sağa kayacaktır..
Animasyonların ekranda görünebilmesi için mutlaka bir elemana animasyon özelliklerinin verilmiş olması gerekir..
Oluşturulan animasyonların , bir elemana verilebilmesi için animate özellikleri kullanılır.. Animasyon adı ve süresinin verilmesi animasyonun canlanması için yeterli olacaktır.
@keyframes hareket {
from {margin-left:0; }
to {margin-left: 200px }
}
div.hareket{
background-color: orange;
padding:2rem;
width:150px;
animation-name: hareket; /* animasyon adı */
animation-duration:2s; /* animasyon süresi */
animation-iteration-count : infinite; /* animasyon tekrar sayısı (sonsuz)*/
}
<div>HAREKET</div>
Yukarıda renk class'lı DIV elemanına ,
Div, margin-left : 0 değerinden , 200px değerine 2 saniyede kaymış olur. . Ancak FROM TO yapısında iki değer belirtebildiğimiz için ,0 dan 200px'e geçişi görebiliyorken, son karede 200px olduktan sonra birden 0px'e (başlangıç değeri) döndüğü için geçişi göremeyiz. Bunun için, ara değerler ekleyebildiğimiz yüzdelik dilimlerin kullanılması daha estetik bir görünüm sağlayabilir.
@keyframes hareket {
0% {margin-left:0; }
50% {margin-left: 200px }
100% {margin-left:0; }
}
div{
background-color: orange;
padding:2rem;
width:150px;
animation-name: hareket; /* animasyon adı */
animation-duration:2s; /* animasyon süresi */
animation-iteration-count : infinite; /* animasyon tekrar sayısı (sonsuz)*/
}
<div>HAREKET</div>
Yukarıdaki renk animasyonunda başlangıç , orta ve son değerlerini belirtmiş olduk;
Dolayısıyla , div sol margin değeri 0'dan 200px'e geçerken de , 200px'den 0'a dönerkende ekranda akışı görebiliriz..
Animasyon eklenecek elemana , hangi animasyonun verileceğini belirler. Bu yapılmadan önce KEYFRAMES ile animasyonun adı belirtilip oluşturulmuş olması gerekir..
@keyframes hareket {
0% {margin-left:0; }
50% {margin-left: 200px }
100% {margin-left:0; }
}
div {
animation-name: hareket ; /* animasyon adı. */
}
Animasyonun ne kadar süreceğini belirler. (s) saniye yada (ms) mili saniye cinsinden belirtilebilir.. Varsayılan değeri 0'dır. Dolayısıyla animasyonun canlanabilmesi için mutlaka verilmesi gerekir.
@keyframes hareket {
0% {margin-left:0; }
50% {margin-left: 200px }
100% {margin-left:0; }
}
div {
animation-name: hareket ; /* animasyon adı */
animation-duration: 2s; /* animasyon 2s saniye sürer */
}
Animasyonun kaç kez tekrar edeceğini belirler. Varsayılan değeri 1'dir. İstenilen sayı kadar tekrar etmesi sağlanabilirken , "infinite" değeri ile sürekli tekrar etmesi de sağlanabilir..
@keyframes hareket {
0% {margin-left:0; }
50% {margin-left: 200px }
100% {margin-left:0; }
}
div {
animation-name: hareket ; /* Animasyon adı */
animation-duration: 2s; /* Animasyon 2s sürer */
animation-iteration-count: 3; /* animasyon 3 kez tekrarlanır */
animation-iteration-count: infinite; /* animasyon sürekli tekrarlanır */
}
Animasyon gecikme süresini belirler. Delay uygulanan animasyonlar, beliritlen süre kadar bekledikten sonra oynatılmaya başlanır..
@keyframes hareket {
0% {margin-left:0; }
50% {margin-left: 200px }
100% {margin-left:0; }
}
div {
animation-name: hareket ; /* Animasyon adı */
animation-duration: 2s; /* Animasyon 2s sürer */
animation-iteration-count: 3; /* animasyon 3 kez tekrarlanır */
animation-iteration-count: infinite; /* animasyon sürekli tekrarlanır */
animation-delay:1s /* animasyon 1s saniye sonra başlar */
}
Animasyonun oluşum yönünü belirler. Animasyonlar normalde keyframes ile baştan sona doğru verilen sürelere göre oluşur. Ancak animation-direction ile oluşum yönü değiştirilebilir..
@keyframes hareket {
0% {margin-left:0; }
50% {margin-left: 200px }
100% {margin-left:0; }
}
div {
animation-name: hareket ; /* Animasyon adı */
animation-duration: 2s; /* Animasyon 2s sürer */
animation-iteration-count: 3; /* animasyon 3 kez tekrarlanır */
animation-iteration-count: infinite; /* animasyon sürekli tekrarlanır */
animation-delay:1s; /* animasyon 1s saniye sonra başlar */
animation-direction : reverse: /* animasyon ters yönde oynatılır , (sondan başa) */
}
Animasyonların hız değişimleri için kullanılır. Varsayılan değeri "ease" dir ; animasyonlar yavaş başlayıp hızlanır ve yavaşlayarak biterler.. Ancak aşağıdaki özellikler ile animasyonun hız ayarları değiştirlebilir..
@keyframes hareket {
0% {margin-left:0; }
50% {margin-left: calc(100% - 150px) }
100% {margin-left:0; }
}
div {
padding:2rem!important;
width:150px;
background-color: #da3d00 ;
animation-name: hareket3;
animation-duration:4s;
animation-iteration-count : infinite;
animation-timing-function : ease;
}
EASE
Varsayılan değerdir. Animasyonlar yavaş başlayıp hızlanır ve yavaşlayarak biterler..
"animation-timing-function : ease"
LINEAR
Hızın doğrusal yayılmasıdır. Animasyon baştan sona aynı hızda devam eder..
"animation-timing-function : linear"
EASE-IN
Animasyon yavaş başlar ve hızlanır..
"animation-timing-function : ease-in"
EASE-OUT
Animasyon hızlı başlar ve bitişe doğru yavaşlar..
"animation-timing-function : ease-out"
EASE-IN-OUT
Animasyon yavaş başlar ve yavaş biter.
"animation-timing-function : ease-in-out"
Sürekli tekrarlamayan animasyonlarda, animasyon bitişinde elemanın hangi değerinde duracağını belirler.
Animasyon özellikleri "animation" özelliği ile kılatılarak tek satırda yazılabilir..
div {
animation-name: example;
animation-duration: 5s;
animation-timing-function: linear;
animation-delay: 2s;
animation-iteration-count: infinite;
animation-direction: alternate;
}
Yukarıdaki animasyon özellikleri sırasıyla aşağıdaki gibi tek satırda yazılabilir..
div {
animation: hareket 5s linear 2s infinite alternate;
}
Görüşmek üzere...
Toplam 30 Makale
Lütfen yorumlarınızda saygılı, yapıcı ve anlaşılır bir dil kullanın.
Küfür, hakaret ya da spam içerikler onaylanmaz.