CodeGenel

CSS ile Animasyon Yapımı

CSS ile Animasyon Yapımı

İçerik

  • Hover İle Transition Kullanarak Animasyon Yapımı
  • Transform Özelliği ile CSS üzerinde Efekt Yapımı
  • ‘@keyframes’ İle CSS Animasyon Yapımı

Hover İle Transition Kullanarak Animasyon

Animasyonda bilinmesi gereken ilk CSS özelliği olan Hover bir pseudo-class’tır ve ilgili nesnenin üzerine faremizi getirdiğimizde tetiklenir . Faremizi üzerine getirdiğimizde ilgili nesnede olmasını istediğimiz değişiklikleri bu pseudo-class’ın içine yazarız .

Transition ise nesnelerimiz üzerinde olmasını beklediğimiz değişikliklerin gecikmeli ve hoş bir geçiş efekti ile gerçekleşmesinde bize yardımcı olur .

Örneğin Arka planı siyah yazı rengi beyaz olan bir kare oluşturmuş olalım ve faremizle üzerine geldiğimizde arka planı daha açık bir renge dönerken yazı rengi siyaha dönsün isteyelim :

HTML :
<div class="item">İtem</div>
CSS :
.item{
    width: 120px;
    height: 120px;
    background-color: black;
    color: white;
    font-size: 24px;
    font-weight: 800;
    display: flex;
    justify-content: center;
    align-items: center;
    margin: 200px auto;
}
.item:hover{
    background-color: bisque;
    color: black;
}
Çıktımız :
CSS Hover

Bu kodda ‘ .item ’ sınıfımıza şu kodu ekleyelim ve çıktımıza bakalım :

    transition: all 2s ease-in;
CSS Hover Transition

Transform Özelliği İle Animasyon

Transform özelliği CSS’de animasyonun bir parçasıdır ve birkaç fonksiyon ile kullanılır . Bahsi geçen fonksiyonlar :

  • Translate
  • Rotate
  • Scale
  • Skew

Translate

Translate fonksiyonu eksenlerine göre 5 farklı durumda kullanılabilir bir animasyon aracıdır ancak biz düz translate üzerinden gideceğiz , tüm çeşitleri ise şu şekilde : translateX,translateY,translateZ,translate,translate3d

  • translateX
  • translateY
  • translateZ
  • translate
  • translate3d
translate( )

translate( ) fonksiyonu iki parametre alır ve bu parametreler x ile y eksenlerine denk gelmektedir . Html’de nesnelerimizin konteynır yapısı konteynırın sol en üst köşesini referans alarak konumlanır . Translate fonksiyonunun içerisine gönderdiğimiz bu iki parametre ile bu referans noktasına ve parametrelere göre bir hareket animasyonu almasını sağlarız . Örneğin translate(30px,-15px) kodunun çıktısına göre ilgili nesne 30px aşağı ve 15px yukarı gidecektir . Yönler parametrelerin işareti ile terstir . Bu kodu az önceki hover efektine ekleyelim. Kodumuz :

.item:hover{
    background-color: bisque;
    color: black;
    transform: translate(30px,-15px);
}
Çıktımız :
Transform Translate

Rotate

Rotate fonksiyonu ise nesneyi kendi etrafında döndüren bir animasyon uygular , parametre olarak derece ve turn alır  . 1 Turn 360derece gibi düşünülebilir . Bir kaç çeşidi vardır , bunlar :

rotateX için :

.item:hover{
    background-color: bisque;
    color: black;
    transform: rotateY(360deg) ;
}
Transform rotateX

rotateY için :

.item:hover{
    background-color: bisque;
    color: black;
    transform: rotateY(360deg) ;
}
Transform rotateY

rotate( ) için :

.item:hover{
    background-color: bisque;
    color: black;
    transform: rotate(405deg) ;
}
Transform rotate

Scale

Scale fonksiyonu ise bizim verdiğimiz oranda nesnenin genişlik ve yükseklik değerlerini değiştiren bir animasyon uygular . Mesela 100×100 bir karemiz olsun ve bun kareye scale(1) verelim herhangi bir değişiklik olmaz ancak scale(1.5) dersek 150×150 bir kare elde ederiz . Scale fonksiyonuda scale , scaleX ve scaleY olarak ayrılır . Üçünün de uygulamasını aşağıda yapalım , kodlar :

HTML :

<div class="item item-1">İtem Scale</div>
<div class="item item-2">İtem ScaleX</div>
<div class="item item-3">İtem ScaleY</div>

CSS :

.item:hover{
    background-color: bisque;
    color: black;
}
.item-1:hover{
    transform: scale(1.5);
}
.item-2:hover{
    transform: scaleX(1.5);
}
.item-3:hover{
    transform: scaleY(1.5);
}

Çıktımız :

Transform Scale

Skew

Son olarak skew fonksiyonumuz parametre olarak derece alır .

HTML :

<div class="item item-1">İtem skew</div>
<div class="item item-2">İtem skewX</div>
<div class="item item-3">İtem skewY</div>

CSS :

.item:hover{
    background-color: bisque;
    color: black;
}
.item-1:hover{
    transform: skew(30deg);
}
.item-2:hover{
    transform: skewX(30deg);
}
.item-3:hover{
    transform: skewY(30deg);
}
Transform Skew

‘@keyframes’ İle Animasyon

Keyframes ile Animasyon da nesneler için süreçler tanımlayabiliyoruz yani sürecin süresini , hangi kısmında ne olmasını istediğimizi hatta bu kısımların ne kadar sürmesi gerektiğini kendimiz seçebiliyoruz .

From-to ile animasyon :

@keyframes animasyon_adi {
    from{
        background-color: red;
        color: blue;
    }
    to{
        background-color: blue;
        color: red;
    }
}

Bu kod parçasını tanımladığımız nesnenin animasyonu başlangıçta arka planı kırmızı , yazı rengi mavi olacak ancak daha sonra arka plan mavi , yazı rengi kırmızıya dönecek . Süresi , gecikmesi yada döngüsü burada değil nesnede tanımlanacak . Biz bu animasyonu az önceki nesnemize uygulayalım :

.item{
    animation : animasyon_adi 2s infinite ;
}

Çıktısı :

Css Keyframes

Burada animation söz dizimin de başka parametrelerde mevcut ancak ben sadece animasyon adını , süresini ve döngü parametresini verdim . İnfinite’nin anlamı sürekli gerçekleşsin demektir .

Şimdi ise süreci kendi planladığımız animasyon tanımlamasına geçelim .

Az önceki animasyonun muadili uygulama :

@keyframes animasyon_adi {
    0%{
        background-color: red;
        color: blue;
    }
    100%{
        background-color: blue;
        color: red;
    }
}

Şimdi CSS’te animasyonda daha önceki kısımlarda bahsettiğimiz rotate’i ve bu kısımda bahsettiğimiz @keyframes özelliğini birleştirerek bir araba animasyonu yapalım:

HTML :
<div class="kapsayici">
     <div class="orta"></div>
     <div class="item">
         <img src="./araba.png" alt="">
     </div>
</div>
CSS :
*{
    margin: 0;
    padding: 0;
}
.kapsayici{
    margin: 100px auto;
    width: 90%;
    height: 500px;
    background-color: aqua;
    position: relative;
    display: flex;
    justify-content: center;
    align-items: center;
}
.orta{
    width: 80%;
    height: 55%;
    background-color: red;
}
.item{
    width: 90px;
    height: 90px;
    position: absolute;
    animation : animasyon_adi 12s infinite ;
}
.item img{
    object-fit: contain;
    width: 100%;
    height: 100%;
}
@keyframes animasyon_adi {
    0%{
        top:10px;left:10px;
        transform:rotate(90deg)
      }
      25%{
        top:10px;left:calc(100% - 100px);
        transform:rotate(180deg)
       
      }
      50%{
        top:calc(100% - 100px);left:calc(100% - 100px);
        transform:rotate(270deg)
      }
      75%{
        top:calc(100% - 100px);left:10px;
        transform:rotate(360deg)
      }
      100%{
        top:10px;left:10px;
        transform:rotate(450deg)
      }
}
Çıktısı :
Keyframes Car Animation

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Başa dön tuşu

Reklam Engelleyici Tespit Edildi

Reklam engelleyici kullandığınız tespit ettik. Sitemizin reklam gelirlerine destek olmak adına, lütfen en azından bizim sitemiz için kapatın.