Smooth Fade In / Out Button Menggunakan jQuery

Written by Fikri Rasyid

Di beberapa project lalu, klien saya meminta agar kondisi hover menu yang ada di situsnya dibuat muncul secara smooth / perlahan-lahan. Setelah googling dan beberapa ujicoba, ternyata hal ini dapat dilakukan via jQuery dengan mudah.

Katakanlah markup-nya seperti ini:

<a href="#" id="smoothbutton">This is button</a>

Lalu styling-nya (kondisi tidak di-hover) seperti ini:

#smoothbutton{
float:left;
width:189px;
height:46px;
text-indent:-99999em;
margin:50px;
background:url(button.png) no-repeat;
}

note: text-nya dihilangkan dengan text-indent negative dan gambar link-nya dibuat dengan image.

Load jQuery. Untuk tutorial ini saya me-load jQuery via CDN-nya Google:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js" type="text/javascript" charset="utf-8"></script>

Setelah jQuery di load, langkah selanjutnya adalah fungsi ini:

$("#smoothbutton").wrapInner("<span>");

Tugasnya adalah menyelipkan tag <span> di dalam <a> sehingga menjadi <a href="#" id="smoothbutton"><span>This is button</span></a>. span ini disiapkan untuk menjadi tampilan saat di-hover. Setelah diselipkan fungsi diatas, siapkan styling dalam kondisi ter-hover-nya:

#smoothbutton span{
float:left;
width:189px;
height:46px;
text-indent:-99999px;
background:url(button.png) 0 -46px no-repeat;
}

Setelah kondisi normal dan hover disiapkan, saatnya fungsi untuk melakukan “hover”-nya disiapkan. Pada dasarnya, ada 3 API jQuery yang akan bekerja:

  1. .hover() : menjalankan fungsi saat mouse dalam keadaan mouse in dan mouse out terhadap elemen tertentu
  2. .css() : mengeset CSS elemen tertentu. Dalam kasus ini adalah mengatur nilai opacity menjadi 0
  3. .fadeTo() : mengeset nilai opacity elemen yang ditargetkan

Prakteknya, ketiga API ini dibuat menjadi seperti ini:

$("#smoothbutton span").css('opacity', 0);

“Hilangkan” #smoothbutton span dengan mengatur opacity-nya menjadi 0 saat haalaman selesai di-load.

$("#smoothbutton span").hover(function(){$(this).fadeTo("medium", 1);}, function(){$(this).fadeTo("medium", 0)});

Saat #smoothbutton span di-hover, munculkan elemen dengan menaikkan opacity-nya menjadi 1 dengan kecepatan medium, dan saat mouse tidak lagi meng-hover, kembalikan nilai opacity menjadi 0 dengan kecepatan medium.

Itu saja, praktis bukan? Lengkapnya:

Markup HTML

<p><a href="#" id="smoothbutton">This is button</a></p>

CSS

#smoothbutton{
float:left;
width:189px;
height:46px;
text-indent:-99999em;
margin:50px;
background:url(button.png) no-repeat;
}

#smoothbutton span{
float:left;
width:189px;
height:46px;
text-indent:-99999px;
background:url(button.png) 0 -46px no-repeat;
}

jQuery

$(document).ready(function(){
$("#smoothbutton").wrapInner("<span>");
$("#smoothbutton span").css('opacity', 0);
$("#smoothbutton span").hover(function(){$(this).fadeTo("medium", 1);}, function(){$(this).fadeTo("medium", 0)});
});

Lebih lengkapnya lagi, anda bisa cek demonya disini.

Selamat mencoba dan semoga bermanfaat :)

About The Author

Fikri Rasyid - I speak HTML + CSS + jQuery, breath in world wide WordPress-land, co-founded WPNest and currently pursuing my bachelor degree majoring English Education at Indonesia University of Education. Google my name for more information about me.

Connect & Subscribe

Keep in touch and get my latest content trough:

Categories

Post Info

5 Responses for This Thought

  1. AMYunus

    16 January 2011

    yeay! outstando mulai aktif lagi :D
    *ato gue yang ketinggalan info yak? :roll:

    btw untuk masukan aja. sekalian dikasih demo nya mas
    jadi biar ada gambaran, maksud dari kodingan ini secara visual seperti apa.
    Trims :D

    Reply
    • fikrirasyid

      17 January 2011

      Haha, memang baru aktif lagi setelah sekian lama. Itu selalu ada demo-nya kok. Nanti kita desain lagi deh agar lebih terlihat tombol demonya :)

      Reply
  2. AMYunus

    16 January 2011

    eh udah ada ding. hahaha. maap maap. kurang jelas sih tulisan `demo` nya :lol: :oops:

    Reply
  3. Ardianzzz

    27 January 2011

    Mungkin ada baiknya “dibackup” dengan CSS3? wkwk, aneh ya, backup kok pakai CSS3… :D
    Sekedar mengantisipasi pada browser yang mematikan JavaScript mungkin?

    Sebenarnya sayang sekali kalau harus menggunakan jQuery untuk memunculkan efek semacam itu. Padahal CSS sudah bisa meskipun masih tahap eksperimental. :(

    Reply
    • fikrirasyid

      01 February 2011

      Kalau saya take it or leave it sih. Jarang sekali memikirkan kondisi jika js dimatikan. Hari gini siapa yang browsing sambil mematikan javascript? :)

      Buat saya menggunakan jQuery asalkan mayoritas user tertangani, there’s no problem :)

      Reply

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>