Katakanlah kita memiliki baris CSS ini untuk mengubah warna dan tinggi sebuah elemen <span>
ketika pointer berada di atasnya:
span { display:block; width:50px; height:120px; background-color:#080; margin:15px auto; } span:hover { height:150px; background-color:#900; margin:0 auto; }
Hasilnya ialah ibarat ini:
Kemudian Anda tambahkan sedikit CSS Transisi untuk memperlihatkan efek animasi:
span { display:block; width:50px; height:120px; background-color:#080; margin:15px auto;transition:all .4s ease-out;}
Maka inilah yang akan Anda hasilkan:
Itu ialah dasarnya. Jika Anda ingin membuat efek animasi yang sedikit unik, Anda dapat mencoba untuk memindahkan deklarasi CSS transisi atau membuat perbedaan durasi transisi antara keadaan normal dan ketika disentuh pointer. Sebagai contoh, jikalau Anda memindahkan deklarasi transisi dari selektor utama ke selektor keadaan :hover
, maka efek transisi hanya akan terjadi ketika pointer berada di atas elemen. Namun ketika pointer keluar dari elemen tersebut, efek transisi akan menghilang dan menyisakan efek tersentak ibarat biasa:
span { display:block; width:50px; height:120px; background-color:#080; margin:15px auto; } span:hover { height:150px; background-color:#900; margin:0 auto;transition:all .4s ease-out;}
Efek di atas tampak sedikit berbeda dari efek yang pertama alasannya ialah transisi hanya terjadi ketika pointer berada di atas elemen. Sedangkan ketika pointer meninggalkannya, efek transisi tidak terjadi.
Untuk membuat efek transisi yang merupakan kebalikan dari efek di atas (yaitu efek transisi terjadi pada ketika pointer keluar dari elemen, namun tidak terjadi pada ketika pointer berada di atasnya), Anda dapat memakai cara ibarat ini:
Pertama-tama, set efek transisi pada selektor utama dengan durasi tertentu:
span { display:block; width:50px; height:120px; background-color:#080; margin:15px auto;transition:all .4s ease-out;}
Kemudian set durasi transisi menjadi 0s
pada keadaan :hover
:
span:hover { height:150px; background-color:#900; margin:0 auto;transition-duration:0s;}
Sehingga kesannya akan menjadi ibarat ini:
Ini berlaku juga untuk pseudo kelas :focus
dan :active
.