T-10 Tabs: Membuat Tab Pada Halaman Web Dengan Lebih Mudah
Sebelumnya saya ucapkan, Selamat tahun baru 2009, semoga segala cita-cita anda tercapai pada tahun ini… Amien. Berarti ini adalah posting pertama saya di tahun 2009… ^_^
Pada saat ini teknologi web semakin gencar dikembangkan oleh developer agar dapat menyaingi keunggulan pemrograman desktop, hal yang nyata terjadi adalah semakin banyak interface form desktop yang bisa diimplementasikan di halaman web. Contohnya seperti DateTimePicker, ColorPicker, DynamicGrid, Slider dan PageTab. Khusus untuk PageTab atau Tab saya akan memberikan kemudahan dalam mengimplementasikannya ke aplikasi anda.
Interface Tab sangat berguna untuk memilah-milah halaman atau form, contohnya anda bisa lihat di gambarnya di bawah ini.

Dengan adanya tab, kita bisa memasukan banyak content pada 1 halaman dan merapihkannya dengan metode page tab.
Biasanya untuk membuat tab kita butuh banyak setup seperti CSS, javascript, pengaturan HTML dll. Namun saya akan memberikan kemudahan pada class yang saya buat di bawah ini, berikut adalah script dari class “tabs.class.js”. Script ini hanya membutuhkan framework prototype.js.
var T10Tabs = Class.create( { // method initialize adalah konstruktor dari class T10Tabs initialize: function(tabprefix,contentprefix){ /* tidak melakukan apa-apa, anda bisa menambahkan beberapa perintah disini apabila ingin mengembangkan */ }, addTab: function(tabID,tabContentID){ this.setNormalStyle(tabID); // Membuat element tabID menjadi style normal (belum diseleksi) $(tabContentID).setStyle({ padding: '4px', border: '1px solid #000', backgroundColor: '#B4D4F1', clear: 'left', // untuk menghilangkan efek 'float' dari style tab display: 'none', // secara default tab content tidak ditampilkan terlebih dahulu height: '200px' }); T10Tabs.tab_id.push(tabID); // simpan element tab ke dalam array tab_id T10Tabs.tab_content.push(tabContentID); // simpan element content tab ke dalam array tab_content var index = T10Tabs.tab_id.length - 1; // ambil index terakhir dengan cara = panjang array tab dikurang 1 Event.observe(tabID,'click', // apabila tab di click maka tampilkan content-nya function(){ (new T10Tabs()).showTab(index); } ); }, setNormalStyle: function(tabID){ // ubah menjadi style normal (belum diseleksi) $(tabID).setStyle({ padding: '4px', border: '1px solid #000', backgroundColor: '#FFF', float: 'left', // diberi nilai float agar element merata ke kiri (walaupun element tsb adalah div) marginLeft: '1px', // memberi jarak antar tab (anda bisa custom sendiri) cursor: 'pointer', position: 'relative', // nilai ini harus ada untuk pengaturan tab selected nantinya zIndex: 5, // untuk mengedepankan element tab agar bisa 'menindih' content tab pada saat diseleksi top: '1px' // akan diubah menjadi 2px apabila tab tsb dipilih (sudah terseleksi) }); }, setSelectedStyle: function(tabID){ // ubah menjadi style selected (sudah terseleksi) $(tabID).setStyle({ top: '2px', // dengan sendirinya tab tsb 'menindih' element content sehingga kelihatan menyatu dengan content tsb backgroundColor: '#B4D4F1', // background disamakan dengan background content agar kelihatan seperti menyatu borderBottom: '0px' // dikosongkan border bottom agar tab dengan content tidak ada garis pemisah dan kelihatan menyatu }); }, showTab: function(index){ if(T10Tabs.tab_id[index] == undefined) return; // jika tab dengan index yg disebut tidak ada maka tidak mengerjakan apa-apa T10Tabs.tab_id.each( // semua tab di jadikan style normal terlebih dahulu function(element){ (new T10Tabs).setNormalStyle(element); } ); T10Tabs.tab_content.each( // semua tab content di sembunyikan terlebih dahulu function(element){ $(element).hide(); } ); this.setSelectedStyle(T10Tabs.tab_id[index]); // jadikan tab dengan index yg dikirimkan dengan style selected tab $(T10Tabs.tab_content[index]).show(); // tampilkan content tab /* simpan tab yang sedang aktif dengan cookie sehingga ketika di refresh dapat kembali ke tab terakhir */ var currentDate = new Date(); currentDate.setDate( currentDate.getDate() + 2 ); // set expired date sampai dengan tanggal besok document.cookie = this.cookieName+"="+index+"; expires="+currentDate.toGMTString()+"; path=/"; }, getLastTab: function(){ // fungsi untuk mendapatkan tab terakhir var results = document.cookie.match ( '(^|;) ?' + this.cookieName + '=([^;]*)(;|$)' ); if ( results ) return ( unescape ( results[2] ) ); else return 0; }, cookieName: 'tabCookie' // nama cookie untuk menyimpan tab yang sedang aktif } ); T10Tabs.tab_id = []; // untuk menyimpan data tab secara array numeric T10Tabs.tab_content = []; // untuk menyimpan data content tab secara array numeric
Untuk penggunaannya anda tinggal siapkan element-element yang akan dijadikan TAB dan CONTENT TAB seperti di bawah ini.
22 23 24 25 26 27 | <div id="tab1">Tab 1</div> <div id="tab2">Tab 2</div> <div id="tab3">Tab 3</div> <div id="content1"><h1>CONTENT 1</h1></div> <div id="content2"><h1>CONTENT 2...</h1></div> <div id="content3"><h1>CONTENT 3...</h1></div> |
Lalu setup tab pada saat dokumen selesai di load.
6 7 8 9 10 11 12 13 14 | window.onload = function(){ var tab = new T10Tabs(); tab.addTab('tab1','content1'); tab.addTab('tab2','content2'); tab.addTab('tab3','content3'); /* load tab berdasar tab yang aktif terakhir kali sebelum di-refresh default tab adalah 0 atau tab paling pertama */ tab.showTab(tab.getLastTab()); } |
Update 15 April 2009: Kini ketika halaman di-refresh maka tab yang aktif akan otomatis berada pada tab yang anda pilih terakhir kali.
Untuk demo script diatas anda bisa melihat di link ini
Untuk men-download script keseluruhan klik link ini
Semoga bisa bermanfaat… ^_^


Chandra Jatnika

wah numpang baca tips2 nya yah mas…. wah jadi banyak wawasan ni,, jadi pengen kaya mas chandra…. hehehheheh
sukes selalu yah mas,….
BTW aku mau tanya kalo tabs menunya itu gak perlu di klik gimana caranya yah mas… jadi saat mouseover gitu…
mohon bimbingannya
sukses mas chandra
4 tahun di bidang programming wow..
kereeeen….. udah expert nie pastinya…
makasih tutorialnya ya om…..
bang kalo misale dia ditaruh di dalam div nya div, maksude iku di dalam div top -> left gmn pengaturannya.. kalo yang anda buat kan di dalam body aja .
gak masalah kok mas… coba aja syntax html tab dan content tab di taro di dalam sebuah div. kan intinya ketika kita ingin buat tab cukup identifikasikan id dari tab dan content-nya
terima kasih pak
saya sangat tertolong
yang kemarin udah bisa pak, tapi di website saya kan ada javscript load image juga , nah disitu permasalahannya. ketika saya run lagi ternyata yang muncul adalah tabbingnyya, sedangkan load image nya ga bisa muncul, bagaimana cara mengatasi hal ini?, atas perhatianya terimakasih
yaah.. coy …
smuanya sama aja..
setiap aq nge-refresh halaman, si tabnya kembali ke tab1
nah gmn ya caranya spya si tab itu ga kembali ke tab1 !!!
mohon pencerahannya
-_-
ha ha ha…
berusan aq dah dapet tab yg kalo direfresh, ga kembali ke tab pertama..
:p
ini dia linknya :
http://www.blog.highub.com/id/php/php-solutions/php-tabbed-views/
ok mas udah saya update scriptnya agar ketika di-refresh kembali ke tab terakhir. saya pake cookie biar gak ribet spt referensi yang mas kasih.
thanks atas masukannya.
Berkunjung dan baca infonya, mudah-mudahan bermanfaat bagi banyak orang, sukses ya.
I Like Relationship.
Mas, mohon bimbingan untuk menjadi programmer handal…