Katakanlah kita mempunyai baris CSS ini untuk mengubah warna dan tinggi sebuah elemen <span>
saat 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 adalah seperti ini:
Kemudian Anda tambahkan sedikit CSS Transisi untuk memberikan 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 adalah dasarnya. Jika Anda ingin menciptakan efek animasi yang sedikit unik, Anda bisa mencoba untuk memindahkan deklarasi CSS transisi atau membuat perbedaan durasi transisi antara keadaan normal dan saat disentuh pointer. Sebagai contoh, jika Anda memindahkan deklarasi transisi dari selektor utama ke selektor keadaan :hover
, maka efek transisi hanya akan terjadi saat pointer berada di atas elemen. Namun saat pointer keluar dari elemen tersebut, efek transisi akan menghilang dan menyisakan efek tersentak seperti 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 karena transisi hanya terjadi saat pointer berada di atas elemen. Sedangkan saat pointer meninggalkannya, efek transisi tidak terjadi.
Untuk membuat efek transisi yang merupakan kebalikan dari efek di atas (yaitu efek transisi terjadi pada saat pointer keluar dari elemen, namun tidak terjadi pada saat pointer berada di atasnya), Anda bisa menggunakan cara seperti 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 hasilnya akan menjadi seperti ini:
Ini berlaku juga untuk pseudo kelas :focus
dan :active
.