Teknik-Teknik Durasi CSS Transisi

Teknik-Teknik Durasi CSS Transisi

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.

10 Komentar

  • Anonim

    efek yang pertama malah saya baru tau, kirain pake transisi ease-in-out ga tau nya cman peletakan transisi nya saja. :D

  • Nyak

    hahaha...
    yang terakhir itu ternyata asik juga yaah... :)

  • Unknown

    mantep sob,,,,

    mau tanya kalo bikin project di google code (svn/trunk) gimana sih caranya,, saya buat dan upload css,, tapi ane pasang di blog kok gak work ya sob,, apa setingnya ya?? :D

    mohon pencerahannya maklum newbie... thanks sob

    • Unknown

      download dulu tortoiseSVN nya mas !
      tutorial cara bikinnya juga udah ada di google:)

  • Unknown

    kunjungan sore mas :D.. mampir ke blog ku yak :D

  • Faunk

    Keren . . . .
    Baru tau tuh Sob saya \o/ .
    pake hover height,kirain pake keyframes tadinya .

  • Pulung

    yang terakhir emang keren mas, kayak efek volume gitu..

  • Unknown

    Wew, nggak nyangka masternya masih ada yang mau sharing..baru ketemu lagi kali ini selama 3 tahun saya ngeblog sama master yg masih rajin update :D
    Mau tanya nih gan, gimana cara membuat title posting <title></title> berbeda pada label yg berbeda..misal label "Manis" saya tambahin kata "Silahkan membaca artikel <title></title>" terus pada label "Asam" tambahannnya bukan yg tadi tp lain misal "Silahkan memakan yang lain <title></title>. Mohon pencerahannya master, kalau berkenan jika sudah tahu kabari saya =>> (musik_id@yahoo.com). Thanks

  • Unknown

    assalamualaykum mas taufiq.., klo sy terapkan pd blog sy efekx gk ngaruh klo buka di google crome tp klo linknya mas taufiq sy bukan di google ko efekx bagus, napa ya..???, *bingung

    • Taufik Nurrohman

      Waalaykumsalam. Sebenarnya kode di atas sudah Saya sederhanakan semua. Dalam prakteknya, tetap harus ditambahkan prefix sesuai dengan masing-masing peramban:

      span {
      display:block;
      width:50px;
      height:120px;
      background-color:#080;
      margin:15px auto;
      -webkit-transition:all .4s ease-out;
      -moz-transition:all .4s ease-out;
      -ms-transition:all .4s ease-out;
      -o-transition:all .4s ease-out;
      transition:all .4s ease-out;
      }

Komentar telah ditutup.