Advertisement
  1. Code
  2. HTML & CSS

Membuat Area Tab Konten yang Rapi Menggunakan CSS & jQuery

Scroll to top
Read Time: 22 min

Indonesian (Bahasa Indonesia) translation by ⚡ Rova Rindrata (you can also view the original English article)

Salah satu tantangan terbesar bagi para desainer web adalah menemukan cara untuk menempatkan banyak informasi pada halaman tanpa kehilangan kegunaan. Konten tab adalah cara terbaik untuk menangani masalah ini dan telah banyak digunakan di blog baru-baru ini. Hari ini kita akan membangun kotak informasi tab kecil sederhana di HTML, kemudian membuatnya berfungsi dengan menggunakan beberapa Javascript sederhana, dan akhirnya kita akan mencapai hal yang sama dengan menggunakan pustaka jQuery.


Langkah 1

Hal yang pertama, kita butuh sesuatu yang terlihat mengagumkan. Juga perjalanan singkat ke Photoshop dan voila kita memiliki mockup yang bagus dari komponen tab kita. Ini cukup sederhana dengan beberapa gradien tambahan agar membuatnya mengagumkan seperti nettuts. Anda bisa mengambil file Photoshop PSD untuk gambar ini jika Anda ingin melihatnya lebih dekat, tapi ini cukup sederhana dan sebenarnya kita bisa membangunnya dari JPG flat.


Langkah 2

Hal pertama yang harus dilakukan saat membangun tentu saja adalah untuk mendapatkan gambaran kasar bagaimana Anda akan melakukannya. Hal ini semakin memudahkan saat semakin banyak hal yang telah Anda kembangkan. Melihat gambar ini saya akan mengatakan hal terbaik untuk dilakukan adalah:

  1. Memiliki kontainer <div> yang akan kita tempatkan segala sesuatu di dalamnya. Dengan begitu jika kita perlu memposisikan kotak kita atau memasukkannya ke sidebar, kita bisa mengambil semuanya yang dibungkus di dalam div dan copy+paste di suatu tempat.
  2. Kemudian kita akan memiliki area judul, mungkin dengan sebuah tag <h>
  3. Kemudian di bawahnya kita akan memiliki tag div kedua yang akan menampung tab dan konten. Ini adalah kotak abu-abu gelap pada gambar.
  4. Kemudian di dalam sana kita akan menggunakan unordered list ul dimana setiap elemen adalah link untuk tab. Ini akan membiarkan kita menggunakan sedikit <li> dari daftar untuk memposisikan tab dan sedikit <a> untuk menata mereka dan memberi mereka rollover dan status on/off.
  5. Kemudian di bawah ini kita akan membuat area <div> terakhir yang memiliki konten untuk setiap tab. Kita memerlukan satu untuk setiap tab ini, dan kita akan menampilkan atau menyembunyikannya tergantung pada tab mana yang telah diklik.

JADI untuk meringkasnya, akan menjadi seperti ini:

1
2
<div>
3
  <h4>Heading</h4>
4
    <div>
5
    
6
        <ul>
7
            <li><a>Tab</a></li>
8
            <li><a>Tab</a></li>
9
            <li><a>Tab</a></li>
10
        </ul>
11
        
12
        <div>Content for Tab 1</div>
13
        <div>Content for Tab 2</div>
14
        <div>Content for Tab 3</div>
15
    
16
    </div>
17
18
</div>

Jangan khawatir jika melihat gambar tersebut tidak segera membuat Anda memikirkan strukturnya. Terkadang Anda hanya perlu melakukan sesuatu dengan trial and error. Dalam kasus saya, saya telah membuat tab kecil ini beberapa kali dan saya tahu ini adalah cara sederhana yang bagus dalam membuatnya.

Juga bagus untuk memikirkan struktur seperti ini sebelum Anda memiliki banyak nama kelas dan id dan konten karena bisa sulit melihat hutan dari pepohonan di kemudian hari. Apalagi saat Anda menambahkan konten untuk semua tab yang berbeda.

Jadi sekarang kita punya gambaran bagaimana membangun struktur kita, mari kita melakukannya!


Langkah 3

Sekarang jika Anda mengikuti tutorial saya di PSDTUTS, Anda akan tahu bahwa saya menyukai latar belakang gradien yang bagus. Jadi sebelum kita mulai dengan struktur tab, mari kita mendapatkan latar belakang yang bagus!

Buka Photoshop, buat dokumen 1000px x 1000px dan tarik gradien radial (halus) yang bagus seperti yang ditunjukkan di bawah ini. Perhatikan bahwa saya menarik dari tengah/atas dan memastikan bahwa gradien selesai pada saat saya sampai ke tepi dokumen. Itu berarti saya dapat mengatur warna latar belakang dalam HTML agar menjadi warna yang lebih gelap dan jika seseorang membentangkan jendela browser mereka akan mulus.


Langkah 4

Buat sebuah direktori baru untuk proyek, kemudian buat sebuah direktori yang kedua di dalamnya yang disebut images dan simpan gambar tersebut di dalamnya sebagai background.jpg. Ketika menyimpan gunakan File > Save for Web and Devices dan pilih JPG dengan pengaturan kualitas sekitar 70. Yang menghasilkan ukuran file 16kb yang tidak terlalu buruk. Dulu ada suatu waktu di mana Anda benar-benar harus berhemat dan menyimpan, tetapi sekarang Anda hanya ingin memastikan bahwa Anda tidak dengan bodohnya boros dengan ukuran file Anda.

Sekarang kita membuat dokumen HTML dan menulis beberapa kode:

1
2
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"

3
 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
4
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
5
<head>
6
	<title>Tabbed Structure - Regular</title>
7
	<link rel="stylesheet" href="style.css" type="text/css" media="screen" />
8
</head>
9
10
<body>
11
</body>
12
</html>

Yang akan menjadi dasar HTML kita. Sekarang kita akan membuat dokumen style.css dan menulis berikut:

1
2
body {
3
	background-image:url(images/background.jpg);
4
	background-repeat:no-repeat;
5
	background-position:top center;
6
	background-color:#657077;
7
	margin:40px;
8
}

Beberapa hal yang perlu diperhatikan di sini:

  1. Ini memungkinkan untuk menulis CSS yang sama menggunakan singkatan dan mengurangi jumlah baris yang digunakan, tapi jauh lebih jelas dengan cara ini dan lebih baik untuk menulis tutorial!
  2. Kita memiliki gambar latar belakang (gradien) dan kita sudah menetapkan ke no-repeat, karena kita hanya ingin ia muncul sekali, berada ditengah dan akhirnya warna latar belakang (#657077) adalah warna lebih gelap.
  3. Saya menambahkan margin 40px. Ini hanyalah untuk memposisikan barang-barang saya kemudian sehingga tampak bagus.

Anda dapat melihat dokumen HTML yang dihasilkan di sini. Perhatikan bahwa jika Anda mengubah ukuran jendela Anda, itu adalah latar belakang yang mulus. Wunderbar!


Langkah 5

Selanjutnya kita tambahkan struktur kita ke halaman sehingga kita bisa mulai menatanya.

1
2
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"

3
 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
4
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
5
<head>
6
	<title>Tabbed Structure - Regular</title>
7
	<link rel="stylesheet" href="style.css" type="text/css" media="screen" />
8
</head>
9
10
<body>
11
12
<div id="tabbed_box_1" class="tabbed_box">
13
	<h4>Browse Site <small>Select a Tab</small></h4>
14
    <div class="tabbed_area">
15
    
16
        <ul class="tabs">
17
            <li><a href="" id="tab_1" class="active">Archives</a></li>
18
            <li><a href="" id="tab_2">Topics</a></li>
19
            <li><a href="" id="tab_3">Pages</a></li>
20
        </ul>
21
        
22
        <div id="content_1" class="content">Content for Tab 1</div>
23
        <div id="content_2" class="content">Content for Tab 2</div>
24
        <div id="content_3" class="content">Content for Tab 3</div>
25
    
26
    </div>
27
28
</div>
29
30
31
</body>
32
</html>

Jadi seperti yang Anda lihat saya pada dasarnya menggunakan struktur yang sama yang saya sebutkan di Langkah 2. Saya telah menambahkan beberapa id dan kelas dan beberapa konten yang sebenarnya. Berikut adalah alasan di balik apa yang telah saya lakukan:

  1. Untuk judul, saya sudah menempatkan subteks "Select a Tab" di elemen <small>. Ini memungkinkan saya menggunakan elemen <h4> untuk menempatkan keseluruhan dan elemen <small> untuk menata ulang dan menempatkan subteks.
  2. Kontainer <div> memiliki id="tabbed_box_1" dan class="tabbed_box". Saya melakukan ini karena kita mungkin menggunakan kembali kode ini beberapa kali pada halaman yang sama. Jika kita melakukannya, kita bisa menggunakan id untuk menempatkan masing-masing di tempat yang berbeda. Tetapi kita masih akan punya kelas untuk melakukan penataan. Sedangkan jika kita menggunakan id untuk penataan, akhirnya kita harus mendefinisikan gaya yang sama lagi dan lagi untuk id yang berbeda.
  3. Saya telah memberikan id kepada link dan area konten karena kita perlu menggunakan Javascript untuk memanipulasinya nanti.
  4. Akhirnya saya sudah memberi elemen <ul> sebuah nama kelas. Sebenarnya kita bisa menatanya tanpa kelas hanya dengan menata .tabbed_area ul {} tapi ini bisa jadi membingungkan dengan ul di masa depan yang kita masukkan ke dalam area konten. Jadi lebih baik untuk memiliki nama kelas yang bisa kita rujuknya.

OK jadi tanpa penataan itu tidak benar-benar  banyak yang bisa dilihat.... belum!


Langkah 6

Sekarang dengan penataan elemen, saya pikir yang terbaik adalah bekerja dari elemen luar ke dalam. Jadi, kita akan mulai dengan elemen ini - <div id="tabbed_box" class="container"> - yang akan kita gunakan untuk memposisikan kotak di tengah dokumen kita dengan baik menggunakan kode ini:

1
2
3
#tabbed_box {
4
	margin: 0px auto 0px auto;
5
	width:300px;
6
}

Langkah 7

Sekarang kita akan melakukan area judul. Kita bisa menata judulnya seperti ini:

1
2
3
.tabbed_box h4 {
4
	font-family:Arial, Helvetica, sans-serif;
5
	font-size:23px;
6
	color:#ffffff;
7
	letter-spacing:-1px;
8
	margin-bottom:10px;
9
}
10
.tabbed_box h4 small {
11
	color:#e3e9ec;
12
	font-weight:normal;
13
	font-size:9px;
14
	font-family:Verdana, Arial, Helvetica, sans-serif;
15
	text-transform:uppercase;
16
	position:relative;
17
	top:-4px;
18
	left:6px;
19
	letter-spacing:0px;
20
}

Beberapa hal yang perlu diperhatikan disini:

  1. Daripada hanya mendefinisikan gaya untuk h4, saya sudah menentukan untuk .tabbed_box h4. Ini penting dalam dokumen HTML yang lebih besar karena Anda mungkin memiliki gaya h4 lainnya di tempat lain. Jadi Anda ingin memastikan Anda tidak tumpang tindih atau menyebabkan masalah tumpang tindih di masa depan.
  2. Anda akan memperhatikan bahwa saya juga telah menyesuaikan margin bawah pada h4 menjadi 10px. Ini agar jaraknya terlihat benar. Penting untuk diketahui bahwa banyak elemen memiliki nilai default. Misalnya sebuah h4 sudah memiliki margin bawah, dan itu lebih besar dari yang kita inginkan. Jadi jika kita tidak mengatur ini sendiri maka akan muncul dengan margin yang lebih besar. Beberapa orang menggunakan stylesheet khusus yang mengatur ulang semua nilai default ini, tapi saya sudah terbiasa mengatur ulangnya secara terpisah saat saya membutuhkannya.
  3. Anda akan melihat bahwa saya juga menggunakan atribut text-transform untuk membuat teks small semuanya menjadi kapital. Tentu saja kita bisa saja menuliskannya dalam bentuk kapital, tapi saya suka melakukannya dengan cara ini!
  4. Anda juga akan melihat dalam definisi small, saya telah memberikannya sebuah definisi position:relative, ini agar saya dapat menyesuaikan dari mana tampilnya, memindahkannya ke atas 4px dan 6px ke kanan.
  5. Akhirnya ketika menata elemen h4 saya memberikannya sebuah spasi huruf negatif, meskipun demikian itu berarti elemen small juga memiliki spasi huruf negatif yang sama yang tidak kita inginkan. Jadi saya harus mendefinisikannya lagi sebagai 0px disana. Ini berkat kenyataan bahwa gaya mengalir turun - maka namanya Cascading Style Sheets. Sering kali Anda akan melihat ada yang aneh di halaman Anda dan itu karena elemen tersebut mewarisi beberapa gaya yang benar-benar Anda lupakan. Ketika saya pertama kali melakukan sedikit penataan ini, saya menatap sedikit untuk beberapa lama mencoba untuk mencari tahu mengapa itu tampak begitu berkumpul, sampai saya teringat!

Langkah 8

Selanjutnya kita akan memberikan <div> bagian dalam kita sedikit gaya dengan kode ini:

1
2
3
.tabbed_area {
4
	border:1px solid #494e52;
5
	background-color:#636d76;
6
	padding:8px;	
7
}

Ini hanya memberikan sedikit definisi dan ruang elemen interior jauh dari sisi-sisinya. Anda dapat melihat di mana kita berada pada gambar di bawah ini.

Dengan bekerja dari luar ke dalam, kita telah memberi elemen kita sedikit bentuk dan jauh lebih mudah untuk melihat bagaimana hal itu pada akhirnya. Juga sering Anda akan memiliki kendala yang datang dari luar ke dalam, misalnya kotaknya mungkin perlu masuk ke kolom dengan lebar tertentu. Akhirnya juga ide bagus untuk dari dalam ke luar, karena dengan demikian pewarisan gaya apapun sudah jelas. Misalnya jika Anda pergi ke arah lain dan melakukan elemen interior terlebih dahulu, gaya selanjutnya mungkin mempengaruhi elemen interior tersebut dan Anda harus kembali dan menyesuaikannya kembali.


Langkah 9

Sekarang kita mendapatkan barang bagus - tabnya! Jika kita menambahkan potongan CSS kecil ini, kita akan berusaha membuat tab terlihat lebih mirip tab:

1
2
3
ul.tabs {
4
	margin:0px; padding:0px;
5
}
6
ul.tabs li {
7
	list-style:none;
8
	display:inline;
9
}

Kode ini mengatakan bahwa elemen <ul> dengan kelas 'tab' seharusnya tidak memiliki margin dan tidak ada padding. Ini juga mengatakan bahwa semua elemen <li> di dalam seharusnya tidak memiliki titik peluru yang menyertainya. Akhirnya kita ubah tampilannya dari 'block'  default menjadi 'inline'. Mari saya jelaskan sedikit yang terakhir itu sedikit lebih detail.

  • Elemen pada sebuah halaman umumnya memiliki tiga nilai umum untuk 'display'. Mereka adalah block, inline, atau none.
  • Menetapkan elemen ke none membuatnya tak terlihat. Kita akan menggunakan kenyataan itu nanti.
  • Menetapkan elemen ke inline membuatnya mengalir bersama dengan elemen lain seperti yang dilakukan oleh teks. Jadi di sini, bukannya muncul di bawah satu sama lain, elemen li mengalir secara horizontal.
  • Menetapkan elemen ke block membuatnya menjadi area persegi panjang yang biasanya muncul di bawah elemen terakhir.
  • Itu adalah penjelasan yang benar-benar disederhanakan, Anda bisa mendapatkan yang lebih lengkap di Web Design From Scratch

Sebenarnya ada nilai display lain yang bisa Anda baca di Quirksmode.


Langkah 10

Tentu saja 'tab' kita masih terlihat sangat jelek, jadi mari kita beri beberapa gaya. Kita telah menggunakan elemen <li> untuk memposisikannya, namun kita akan menggunakan elemen <a> untuk menata mereka, seperti ini:

1
2
3
ul.tabs li a {
4
	background-color:#464c54;
5
	color:#ffebb5;
6
	padding:8px 14px 8px 14px;
7
	text-decoration:none;
8
	font-size:9px;
9
	font-family:Verdana, Arial, Helvetica, sans-serif;
10
	font-weight:bold;
11
	text-transform:uppercase;
12
	border:1px solid #464c54; 
13
}
14
ul.tabs li a:hover {
15
	background-color:#2f343a;
16
	border-color:#2f343a;
17
}
18
ul.tabs li a.active {
19
	background-color:#ffffff;
20
	color:#282e32;
21
	border:1px solid #464c54; 
22
	border-bottom: 1px solid #ffffff;
23
}

Jadi apa yang telah kita lakukan di sini adalah:

  1. Menata tag <a> sehingga memiliki padding dan memiliki warna latar belakang dan teks yang tepat, dan memiliki pengaturan font yang tepat.
  2. Dibuat gaya kedua untuk a:hover dan menggelapkan warna latar belakang dan border. Perhatikan bahwa kita tidak perlu menetapkan semua pengaturan <a> lainnya karena mereka terwariskan. Kita hanya perlu mengubah yang ingin kita ubah saat pengguna memindahkan mouse mereka ke atas tab.
  3. Akhirnya kita memiliki gaya ketiga ketika <a> memiliki class="active". Dengan kata lain untuk tab yang terpilih. Disini lagi kita tetapkan warna latar belakang menjadi putih dan mengubah warna teksnya. Satu hal yang perlu diperhatikan adalah kita juga mengubah border bawah menjadi putih. Ini agar tab terlihat seperti melekat pada area konten (saat kita menambahkannya nanti!)

Langkah 11

Ada dua hal yang perlu kita lakukan untuk membuat area konten bekerja. Yang pertama adalah kita harus membuat dua area kedua lenyap dan yang kedua adalah membuat tampilan mereka terlihat sesuai.

1
2
.content {
3
	background-color:#ffffff;
4
	padding:10px;
5
	border:1px solid #464c54; 	
6
}
7
#content_2, #content_3 { display:none; }

Anda akan melihat bahwa bagian pertama dari CSS memberitahu browser bahwa semua elemen dengan class="content" harus berwarna putih dengan padding dan border (warna yang sama dengan tab). Bagian kedua mengatakan bahwa elemen dengan id="content_2" dan id="content_3" harus memiliki display:none, atau dengan kata lain tidak terlihat.

Kemudian ketika kita menambahkan beberapa Javascript kita bisa menggunakan skrip untuk bergantian antara display:none dan display:block untuk membuat mereka tampil dan bersembunyi.

Jadi, inilah cara tab yang kita cari, Anda juga dapat melihat versi HTML dari tempat kita berada. Seperti yang bisa Anda lihat, ini terlihat cukup dekat sekarang, namun kita perlu memperbaiki jaraknya dan menambahkan beberapa konten sebenarnya.


Langkah 12

Memperbaiki masalah spasi sebenarnya adalah masalah menambahkan margin kembali ke elemen <ul> seperti ini:

1
2
3
ul.tabs {
4
	margin:0px; padding:0px;
5
	margin-top:5px;
6
	margin-bottom:6px;
7
}

Sejujurnya saya tidak yakin mengapa masalah jarak itu terjadi. Terkadang HTML membingungkan saya, tapi saya hanya menyesuaikan pengaturan sampai hal-hal membenarkan mereka sendiri. Terkadang dalam prosesnya saya menemukan apa penyebabnya, terkadang tidak. Saya kira apa yang saya katakan adalah, kecuali jika Anda benar-benar akan masuk ke dalam detail seluk beluk spesifikasi w3, cepat atau lambat Anda akan mengalami beberapa masalah yang tidak dapat Anda jelaskan. Jangan biarkan hal itu menjatuhkan Anda, sesuaikan saja sampai Anda menemukan sebuah solusi atau penyelesaian.


Langkah 13

Sekarang kita akan menambahkan beberapa konten ke dalam area konten. Saya menghindari ini sebelumnya karena saya ingin agar HTML terlihat sederhana. Berikut beberapa hal:

1
2
<div id="tabbed_box_1" class="tabbed_box">
3
	<h4>Browse Site <small>Select a Tab</small></h4>
4
    <div class="tabbed_area">
5
    
6
        <ul class="tabs">
7
            <li><a href="" id="tab_1" class="active">Topics</a></li>
8
            <li><a href="" id="tab_2">Archives</a></li>
9
            <li><a href="" id="tab_3">Pages</a></li>
10
        </ul>
11
        
12
        <div id="content_1" class="content">
13
        	<ul>
14
            	<li><a href="">HTML Techniques <small>4 Posts</small></a></li>
15
            	<li><a href="">CSS Styling <small>32 Posts</small></a></li>
16
            	<li><a href="">Flash Tutorials <small>2 Posts</small></a></li>
17
            	<li><a href="">Web Miscellanea <small>19 Posts</small></a></li>
18
            	<li><a href="">Site News <small>6 Posts</small></a></li>
19
            	<li><a href="">Web Development <small>8 Posts</small></a></li>
20
			</ul>
21
        </div>
22
        <div id="content_2" class="content">
23
        	<ul>
24
            	<li><a href="">December 2008 <small>6 Posts</small></a></li>
25
            	<li><a href="">November 2008 <small>4 Posts</small></a></li>
26
            	<li><a href="">October 2008 <small>22 Posts</small></a></li>
27
            	<li><a href="">September 2008 <small>12 Posts</small></a></li>
28
            	<li><a href="">August 2008 <small>3 Posts</small></a></li>
29
            	<li><a href="">July 2008 <small>1 Posts</small></a></li>
30
			</ul>
31
        </div>
32
        <div id="content_3" class="content">
33
        	<ul>
34
            	<li><a href="">Home</a></li>
35
            	<li><a href="">About</a></li>
36
            	<li><a href="">Contribute</a></li>
37
            	<li><a href="">Contact</a></li>
38
			</ul>
39
        </div>
40
    
41
    </div>
42
43
</div>

Jadi di sini saya hanya menambahkan unordered list ke tiga area konten. Kebetulan saya mengejek ini seolah-olah itu akan digunakan di blog WordPress. Tapi sebenarnya Anda bisa menggunakan ini untuk segala macam hal. Situs FlashDen baru yang saya kerjakan beberapa hari yang lalu menggunakan area tab untuk menampilkan berbagai jenis file terbaru.

Sekarang kita akan menambahkan beberapa penataan untuk membuat tampilannya sedikit lebih bagus:

1
2
3
.content ul {
4
	margin:0px;
5
	padding:0px 20px 0px 20px;
6
}
7
.content ul li {
8
	list-style:none;
9
	border-bottom:1px solid #d6dde0;
10
	padding-top:15px;
11
	padding-bottom:15px;
12
	font-size:13px;
13
}
14
.content ul li a {
15
	text-decoration:none;
16
	color:#3e4346;
17
}
18
.content ul li a small {
19
	color:#8b959c;
20
	font-size:9px;
21
	text-transform:uppercase;
22
	font-family:Verdana, Arial, Helvetica, sans-serif;
23
	position:relative;
24
	left:4px;
25
	top:0px;
26
}

Sekali lagi kita menata daftar kita. Kali ini daripada memberi elemen <ul> sebuah nama kelas, saya cukup menambahkan gaya ke semua elemen <ul> di dalam elemen dengan class="content". Ini berarti saya tidak perlu menulis sebanyak mungkin nama kelas ke dalam HTML saya yang membuatnya lebih rapi dan bersih.

Hal lain yang perlu diperhatikan:

  1. Sekali lagi kita telah menghapus poin peluru dari elemen li dengan list-style:none.
  2. Kali ini kita menata elemen-elemen daftar yang bertentangan dengan <a>. Ini penting karena jika kita memiliki item menu yang bukan merupakan link, dan cara ini masih bisa cocok dengan rapi.
  3. Sekali lagi saya telah menggunakan sebuah pembungkus <small> di dalam <a> untuk membuat jumlah posting. Saya telah menggunakan text-transform untuk membuat semuanya kapital dan beberapa posisi relatif untuk menggesernya sedikit ke kanan.

Langkah 14

Jadi, inilah tampilan halaman kita:

Secara keseluruhan cukup bagus kecuali kita memiliki satu border terlalu banyak. Tapi tidak apa-apa, kita bisa memperbaikinya dengan pseudo-selector ajaib yang disebut 'last-child' seperti ini:

1
2
.content ul li:last-child {
3
	border-bottom:none;
4
}

Gaya ini hanya berlaku untuk elemen terakhir dari jenisnya sendiri - yaitu elemen <li> terakhir. Sekarang saya harus menunjukkan bahwa last-child tidak bekerja di semua browser. Khususnya IE6 tidak menyukainya. Tapi tidak apa-apa karena itu bukanlah akhir dunia jika border-nya berada di sana, dan ini adalah cara saya yang halus untuk menghukum siapa pun yang tidak memiliki browser yang diperbarui :-).


Langkah 15

Sekarang hanya ada satu langkah lagi untuk menyelesaikan HTML kita, dan itu adalah beberapa gambar latar belakang yang bagus untuk elemen kita. Seperti yang akan Anda ingat beberapa elemen dalam file PSD asli memiliki gradien yang halus. Jadi sekarang saatnya menambahkannya. Ada tiga tahapan: (a) pada tab aktif (b) pada tab yang tidak aktif dan (c) di bagian bawah area konten. Berikut adalah tiga gambar yang akan kita butuhkan:



Mereka agak sulit dilihat, tapi pada dasarnya mereka masing-masing irisan gradien kecil yang akan kita atur sebagai gambar latar belakang yang berulang-ulang. Berikut adalah tampilan dekat untuk tab (perhatikan bahwa saya telah menambahkan border tipis di sekelilingnya sehingga sedikit lebih jelas. Perhatikan bahwa ada garis putih 1px di bagian atas. Itu akan membuat tab terlihat sangat tajam.

Jadi kita perlu melakukan beberapa penyesuaian pada kode CSS untuk ditambahkan pada gambar latar belakang, seperti ini:

1
2
ul.tabs li a {
3
	background-image:url(images/tab_off.jpg);
4
	background-repeat:repeat-x;	 
5
	background-position:bottom;
6
}
7
ul.tabs li a.active {
8
	background-image:url(images/tab_on.jpg);
9
	background-repeat:repeat-x;
10
	background-position:top; 
11
}
12
.content {
13
	background-image:url(images/content_bottom.jpg);
14
	background-repeat:repeat-x;	 
15
	background-position:bottom;	
16
}

Perhatikan bahwa saya benar-benar memasukkan sedikit tambahan ini sesuai dengan definisi kelas mereka lainnya, namun untuk singkatnya hanya disalin dalam ekstrak. Seperti yang bisa Anda lihat di ketiga kasus tersebut, kita mengulangi gambar latar belakang sepanjang sumbu x saja. Dalam kasus dua (tab yang tidak aktif dan area konten), kita melakukannya di bagian bawah, dan lainnya adalah di bagian atas.


Bergaya!

Dan dengan itu kita sudah resmi menyelesaikan bagian HTML/CSS dari tutorial ini. Anda bisa melihat halaman yang selesai ditata di sini.


Menambahkan Skrip Sederhana

Hal berikutnya yang perlu kita lakukan adalah menambahkan beberapa Javascript agar tab kita benar-benar melakukan sesuatu. Pertama, kita akan melakukan ini dengan tangan dan kemudian saya akan menunjukkan cara menggunakan pustaka Javascript untuk mencapai hal yang sama. Sekarang saya harus menunjukkan bahwa saya bukan pakar JS, dan saya berharap bisa membawa beberapa master programatik untuk menulis tutorial di sini, jadi jika Anda melihat saya melakukan sesuatu yang agak meragukan, silakan memberikan komentar dan saya akan memperbaiki tutorialnya dan membuatnya menjadi lebih sebagai praktik terbaik!

Jadi pertama mari kita menguraikan apa yang ingin kita lakukan saat seseorang mengklik tab. Kita ingin mematikan tab kita saat ini, mengaktifkan yang baru, menyembunyikan area konten saat ini dan menampilkan yang baru.

Sekarang kita bisa memiliki sesuatu yang pintar yang bekerja di mana yang saat ini aktif dan mematikannya, tapi lebih mudah hanya untuk melewatinya dan mematikan semuanya, kemudian mengaktifkan yang kita inginkan. Demikian pula untuk area konten, kita bisa menyembunyikan ketiganya dan kemudian menunjukkan yang kita inginkan. Ini menyelamatkan kita dari harus bekerja keras menyelesaikan keadaan saat ini.


Menemukan Elemen menggunakan DOM

Elemen-elemen yang kita kerjakan terlihat seperti ini:

  1. <a href="" id="tab_1" class="active">
  2. <div id="content_1" class="content">

Sekarang di Javascript kita bisa menemukan elemen hanya dengan menggunakan id-nya dan metode document.getElementById(). Jadi document.getElementById('content_1') akan memberi kita area konten pertama. Kita kemudian dapat mengatur gaya display ke none menggunakan baris ini:

document.getElementById('content_1').style.display = 'none';

Demikian pula untuk melihat kelas kita menggunakan:

document.getElementById('tab_1').className = 'active';

Jadi, pendekatan yang benar-benar sederhana adalah menulis:

1
2
function tabSwitch(new_tab, new_content) {
3
	
4
	document.getElementById('content_1').style.display = 'none';
5
	document.getElementById('content_2').style.display = 'none';
6
	document.getElementById('content_3').style.display = 'none';		
7
	document.getElementById(new_content).style.display = 'block';	
8
	
9
10
	document.getElementById('tab_1').className = '';
11
	document.getElementById('tab_2').className = '';
12
	document.getElementById('tab_3').className = '';		
13
	document.getElementById(new_tab).className = 'active';		
14
15
}

Ini akan ditempatkan di dalam sebuah file, sebut saja functions.js. Kita kemudian memanggil skrip ini dengan mengubah tautan tab kita menjadi:

1
2
3
<script src="functions.js" type="text/javascript"></script>	
4
<ul class="tabs">
5
    <li><a href="javascript:tabSwitch('tab_1', 'content_1');" id="tab_1" class="active">Topics</a></li>
6
    <li><a href="javascript:tabSwitch('tab_2', 'content_2');" id="tab_2">Archives</a></li>
7
    <li><a href="javascript:tabSwitch('tab_3', 'content_3');" id="tab_3">Pages</a></li>
8
</ul>

Dan tentu saja, inilah contoh dari javascript super sederhana kita. Ia bekerja!


Skrip yang Lebih Kompleks

Sekarang ada beberapa masalah yang sangat jelas dengan skrip ini. Paling tidak di antaranya adalah jika Anda menambahkan tab lain, Anda harus mengubah fungsi Anda. Dan jika Anda memiliki lebih dari satu set tab pada halaman, Anda memerlukan dua fungsi! Jadi mari kita memperkuatnya sedikit:

1
2
3
function tabSwitch_2(active, number, tab_prefix, content_prefix) {
4
	
5
	for (var i=1; i < number+1; i++) {
6
	  document.getElementById(content_prefix+i).style.display = 'none';
7
	  document.getElementById(tab_prefix+i).className = '';
8
	}
9
	document.getElementById(content_prefix+active).style.display = 'block';
10
	document.getElementById(tab_prefix+active).className = 'active';	
11
	
12
}

Versi kedua dari fungsi pengalihan tab membutuhkan beberapa argumen lagi namun sedikit lebih pandai. Mengasumsikan bahwa kita memiliki satu set tab dan satu set area konten dan mereka memiliki id yang memiliki awalan dan satu set nomor yang meningkat. Yaitu tab_1, tab_2 ... dan content_1, content_2 ...

Argumen pertama yang dibutuhkan fungsi kita, 'active', adalah angka tab/konten yang ingin kita aktifkan. Argumen kedua, 'number', adalah jumlah tab yang digunakan. Argumen ketiga dan keempat adalah prefiks yang digunakan dalam id elemen kita.

Fungsinya kemudian memiliki loop yang berulang melalui 1 sampai jumlah tab dan mematikan semuanya, kemudian mengalihkan kedua yang ingin kita kembali pada akhirnya. Dengan kata lain itu adalah skrip yang sama seperti sebelumnya, tapi kita baru saja membuatnya sedikit lebih pintar.

Jadi dalam contoh kita untuk memanggil fungsinya kita akan memiliki kode ini:

1
2
3
<script src="functions.js" type="text/javascript"></script>	
4
<ul class="tabs">
5
    <li><a href="javascript:tabSwitch_2(1, 3, 'tab_', 'content_');" id="tab_1" class="active">Topics</a></li>
6
    <li><a href="javascript:tabSwitch_2(2, 3, 'tab_', 'content_');" id="tab_2">Archives</a></li>
7
    <li><a href="javascript:tabSwitch_2(3, 3, 'tab_', 'content_');" id="tab_3">Pages</a></li>
8
</ul>

Ini berarti bahwa nanti jika kita memiliki set tab kedua, kita bisa memberi mereka awalan id yang berbeda dan menggunakan fungsi yang sama berulang-ulang.

Lihat contoh javascript yang kedua.


Menggunakan jQuery

Akhir-akhir ini ada banyak pustaka Javascript yang muncul, dan sebenarnya ada (setidaknya) dua yang dibuat khusus untuk mencapai efek tab ini: MooTabs dan DomTab. Saya belum pernah menggunakan keduanya, tapi dari sekilas pandang mereka terlihat cukup berguna.

Namun karena saya telah mendengar banyak tentang pustaka jQuery, saya memutuskan untuk mencoba pengalihan tab yang sama dengan menggunakan jQuery. Saya merasa solusi saya bisa menggunakan beberapa pekerjaan, tapi masih menarik untuk dilihat.

Jadi pertama, pergi ke situs jQuery dan unduh versi terbaru dari pustaka skrip mereka.


Memahami jQuery

jQuery menyediakan banyak fungsi yang memungkinkan Anda untuk memilih kelompok dari beberapa hal. Misalnya jika Anda ingin memilih setiap elemen pada halaman yang merupakan link (yaitu elemen <a>) dan kemudian membuat mereka lenyap, Anda akan menempatkan ini di area <head> Anda:

1
2
<script src="scripts/jquery-1.2.3.min.js"></script>

3
<script>
4
	
5
	// When the document loads do everything inside here ...

6
	$(document).ready(function(){
7
		
8
		$("a").slideUp();
9
		  
10
	});
11
</script>

Baris pertama menambahkan pustaka skrip jQuery. Area skrip utama ada di dalam potongan kode yang terlihat seperti ini: $(document).ready(function(){}); Ini pada dasarnya memberitahu browser Anda untuk mengeksekusi segala sesuatu di dalamnya ketika menyentuh halaman. Jadi, dalam kasus kita, kita memberikan perintah:

1
2
3
		$("a").slideUp();

Ini mengatakan temukan segala sesuatu yang merupakan <a> dan jalankan slideUp() padanya. Atau dengan kata lain: temukan semua tautan dan buat semuanya lenyap dengan efek bergeser ke atas. Coba tambahkan skrip itu ke halaman dan muat dan Anda akan melihat semua tautan Anda lenyap. Cukup rapi ya?

Bagaimanapun, ada banyak cara untuk memilih sesuatu, dan Anda dapat membacanya di API dan dokumentasinya. Anda bisa melakukan hal-hal seperti menemukan setiap elemen dengan kelas tertentu, id tertentu dan sebagainya. Pada titik tertentu saya akan menulis tutorial pengantar jQuery yang tepat di sini, tapi untuk saat ini, intro kecil itu akan melakukannya - selain hanya memiliki satu jam pengalaman dengan jQuery, saya menduga itu akan menjadi sesuatu yang menyedihkan bagi saya untuk menulis intro untuknya!

Meluncurkan dengan Penyeleksi

Jadi setelah sedikit eksperimen, saya menemukan cara menggunakan jQuery untuk membuat tab saya meluncur masuk dan keluar. Untuk melakukannya, terlebih dahulu saya memodifikasi link saya agar tidak memiliki javascript, melainkan memiliki atribut title dan tambahan class="tab". Perhatikan bahwa Anda bisa memberikan sebuah elemen dua buah kelas dengan melakukan ini: class="tab active".

1
2
3
<ul class="tabs">
4
    <li><a href="#" title="content_1" class="tab active">Topics</a></li>
5
    <li><a href="#" title="content_2" class="tab">Archives</a></li>
6
    <li><a href="#" title="content_3" class="tab">Pages</a></li>
7
</ul>

Sekarang menggunakan dua elemen ini, pada dasarnya saya bisa mendapatkan semua link dengan kelas 'tab' dan saya juga bisa menemukan elemen yang id-nya sama dengan atribut title dari link yang baru saja diklik. Inilah skripnya (ditempatkan di <head>) yang menjelaskan ini sedikit lebih baik:

1
2
3
 <script src="scripts/jquery-1.2.3.min.js"></script>

4
    <script>
5
	
6
	  // When the document loads do everything inside here ...

7
	  $(document).ready(function(){
8
		
9
		// When a link is clicked

10
		$("a.tab").click(function () {
11
			
12
			// switch all tabs off

13
			$(".active").removeClass("active");
14
			
15
			// switch this tab on

16
			$(this).addClass("active");
17
			
18
			// slide all elements with the class 'content' up

19
			$(".content").slideUp();
20
			
21
			// Now figure out what the 'title' attribute value is and find the element with that id.  Then slide that down.

22
			var content_show = $(this).attr("title");
23
			$("#"+content_show).slideDown();
24
		  
25
		});
26
	
27
	  });
28
  </script>

Juga saya telah menambahkan komentar untuk membantu menjelaskan. Pada dasarnya ketika ada link dengan kelas 'tab' yang diklik, kita melakukan semuanya di dalam fungsi tersebut.

Dan untuk melihat contoh kerja terakhir dengan jQuery, klik di sini!


Akhir Kata

OK, jadi beberapa menit setelah membuat contoh jQuery saya, saya menemukan bahwa sebenarnya ada kontrol visual 'tabs' khusus di jQuery. Saya harus bermain dengannya di hari esok karena tidak diragukan lagi akan membuat hidup ini jauh lebih sederhana!

Sementara itu saya harap Anda menikmati tutorialnya dan mendapatkan sesuatu darinya.

Advertisement
Did you find this post useful?
Want a weekly email summary?
Subscribe below and we’ll send you a weekly email summary of all new Code tutorials. Never miss out on learning about the next big thing.
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.