Meningkatkan Interaktivitas dengan Pembuatan Tab Bar : Memperkaya Navigasi Website Anda
Nuzul Karomah
25 Maret 2024
Tab bar pada JavaScript adalah sebuah komponen antarmuka pengguna yang biasanya digunakan dalam pengembangan web untuk menyediakan navigasi yang mudah antara berbagai bagian atau konten yang terpisah dalam sebuah halaman web. Tab bar biasanya terdiri dari beberapa tab yang dapat diklik oleh pengguna untuk beralih antara konten yang berbeda.
Pada dasarnya, tab bar terdiri dari dua komponen utama:
Tab: Setiap tab adalah elemen yang dapat diklik yang mewakili satu bagian atau konten tertentu. Ketika sebuah tab diaktifkan, konten yang sesuai dengan tab tersebut akan ditampilkan kepada pengguna.
Konten: Konten yang sesuai dengan setiap tab akan ditampilkan ketika tab tersebut diaktifkan. Ini bisa berupa teks, gambar, formulir, atau konten web lainnya.
<link rel="stylesheet"
href="https://cdnjs.cloudflare.com/ajax/libs/inter-ui/3.19.3/inter.css">
<nav>
<ul>
<li class="active">
<button>Animation</button>
</li>
<li>
<button>Branding</button>
</li>
<li>
<button>Illustration</button>
</li>
</ul>
</nav>
<script src="https://unpkg.co/gsap@3/dist/gsap.min.js"></script>
Program di atas adalah contoh kode HTML yang mencakup beberapa elemen HTML dan juga menghubungkan ke beberapa sumber daya eksternal, seperti stylesheet dan skrip JavaScript. Mari kita jelaskan setiap bagian dari program tersebut:
Link Stylesheet: Baris ini menghubungkan dokumen HTML ke sebuah stylesheet eksternal dari Inter UI. Stylesheet ini kemungkinan mendefinisikan gaya tata letak dan tampilan untuk elemen-elemen HTML dalam dokumen.
Navigation: Ini mendefinisikan sebuah elemen navigasi (<nav>
) yang berisi sebuah daftar tak terurut (<ul>
) yang terdiri dari tiga item daftar (<li>
). Setiap item daftar memiliki tombol (<button>
) yang mewakili setiap kategori.
<li>
) untuk menunjukkan bahwa kategori "Animation" sedang aktif atau dipilih.Script: Ini mengimpor skrip JavaScript dari GSAP (GreenSock Animation Platform) untuk menambahkan fungsi animasi ke dalam dokumen.
Dengan demikian, program ini adalah contoh halaman HTML sederhana yang menggunakan sebuah navigasi dengan tombol-tombol dan menghubungkan ke sebuah perpustakaan JavaScript eksternal untuk animasi.
/* Code Pertama */
nav ul {
margin: 0;
padding: 0;
list-style: none;
display: flex;
gap: 40px;
}
nav ul li button (
appearance: none;
border: none;
cursor: pointer;
background-color: transparent;
padding: 0;
margin: 0;
font-family: "Inter";
font-weight: 600;
font-size: 16px;
list-style: 22px;
color: #505866;
transition: color 0.25s;
}
nav ul li.active button {
color: #fff;
}
nav ul li:not(.active):hover button {
color: #807E8C;
}
/* Code Kedua */
nav active-element {
--active-element-scale-x: 1;
--active-element-scale-y: 1;
--active-element-show: 0;
--active-element-opacity: 0; --active-element-width: 0px;
--active-element-strike-x: 0%;
--active-element-mask-position: 0%;
position: absolute;
left: 0;
top: 34px;
height: 3px;
width: 36px;
border-radius: 2px;
background-color: #fff;
opacity: var(--active-element-show);
}
nav active-element > svg.
nav active-element.strike {
position: absolute;
right: 0;
top: 50%;
transform: translateY(-50%);
opacity: var(--active-element-opacity);
width: var(--active-element-width);
mix-blend-mode: multiply;
}
nav active-element > svg {
display: block;
overflow: visible;
height: 5px;
}
nav .active-element .strike (
mask-image: linear-gradient(to right, transparent calc(0% +
var(--active-element-mask-position)), black calc(15% +
var(--active-element-mask-position)), black 80%, transparent);
padding: 24px 0
nav .active-element .strike svg {
display: block;
overflow: visible;
height: 12px;
width: calc (var(--active-element-width) 2);
transform: translate(var(--active-element-strike-x), 30%)
scale (var(--active-element-scale-x), var(--active-element-scale-y));
nav active-element strike svg:last-child (
transform: translate(var(--active-element-strike-x), -30%) scale(-1);
nav active-element strike svg g path:nth-child(2) {
filter: blur(2px);
}
nav .active-element .strike svg g path:nth-child(3) {
filter: blur(4px);
}
nav.before.active-element {
transform: rotateY(180deg);
}
Program di atas adalah kumpulan aturan gaya CSS yang digunakan untuk mengatur tampilan dan perilaku dari elemen-elemen navigasi dan elemen yang menandai tab aktif pada sebuah tab bar. Mari kita bahas setiap bagian dari kode tersebut:
Styling untuk <nav>
, <ul>
, dan <li>
:
display: flex
, margin
, padding
, dan list-style
.gap
.Styling untuk Tombol Tab (<button>
)
appearance: none;
.Styling untuk Tombol Tab Aktif:
Styling untuk Tombol Tab Non-Aktif saat Hover:
Styling untuk Elemen yang Menandai Tab Aktif (active-element
)
Styling untuk Struktur Anak-anak dari Elemen yang Menandai Tab Aktif (active-element > svg
)
Styling untuk Animasi Garis Pada Elemen yang Menandai Tab Aktif
Styling untuk Transformasi Elemen Sebelum Elemen yang Menandai Tab Aktif
const navElement document.querySelector("nav");
const activeElement= document.createElement("div");
activeElement.classList.add("active-element");
const getOffsetLeft (element) => {
const elementRect element.getBoundingClientRect();
return (
elementRect.left
navElement.getBoundingClientRect().left +
(elementRect.width activeElement.offsetWidth) / 2
);
};
navElement.appendChild(activeElement);
const activeButton navElement.querySelector("ul li.active button");
document.fonts.ready.then(() => { gsap.set(activeElement, (
x: getOffsetLeft(activeButton),
});
gsap.to (activeElement, {
"--active-element-show": "1",
duration: 9.2,
});
});
navElement.querySelectorAll("ul li button").forEach((button, index) => { button.addEventListener("click", () => {
const active navElement.querySelector("ul li.active");
const oldIndex [active.parentElement.children].indexOf(active);
if (
index oldIndex ||
navElement.classList.contains("before") ||
navElement.classList.contains("after")
){
return;
}
const x = getOffsetLeft(button);
const direction index > oldIndex? "after": "before";
const spacing Math.abs(x getOffsetLeft(active));
navElement.classList.add(direction);
active.classList.remove("active");
button.parentElement.classList.add("active");
Program di atas adalah potongan kode JavaScript yang bertujuan untuk menambahkan efek animasi pada elemen yang menandai tab aktif pada sebuah tab bar. Mari kita bahas setiap bagian dari kode tersebut:
Seleksi Navigasi dan Pembuatan Elemen Aktif:
const navElement = document.querySelector("nav");
: Memilih elemen navigasi di dalam dokumen menggunakan querySelector
.const activeElement = document.createElement("div");
: Membuat sebuah elemen div baru yang akan digunakan untuk menandai tab aktif.activeElement.classList.add("active-element");
: Menambahkan kelas CSS "active-element" ke elemen yang baru dibuat.navElement.appendChild(activeElement);
: Menambahkan elemen yang baru dibuat ke dalam elemen navigasi.Fungsi untuk Mendapatkan Posisi Horizontal Elemen:
const getOffsetLeft = (element) => { ... }
: Sebuah fungsi yang menghitung posisi horizontal suatu elemen relatif terhadap elemen induknya. Ini digunakan untuk menentukan posisi elemen yang menandai tab aktif.Penyesuaian Awal Animasi:
const activeButton = navElement.querySelector("ul li.active button");
: Memilih tombol yang aktif pada saat awal. Ini akan menjadi tombol yang diberi animasi saat halaman dimuat.document.fonts.ready.then(() => { ... }
: Menunggu hingga semua font dalam halaman telah dimuat sebelum melanjutkan animasi.Animasi untuk Memperlihatkan Elemen Aktif:
gsap.set(activeElement, { ... }
: Mengatur posisi awal elemen yang menandai tab aktif dengan menggunakan GreenSock Animation Platform (GSAP).gsap.to(activeElement, { ... }
: Menganimasikan elemen yang menandai tab aktif untuk memperlihatkannya secara bertahap.Pengaturan Event Listener untuk Tombol Tab:
navElement.querySelectorAll("ul li button").forEach((button, index) => { ... }
: Menetapkan event listener untuk setiap tombol tab di dalam navigasi.button.addEventListener("click", () => { ... }
: Mendengarkan peristiwa klik pada setiap tombol tab.Program tersebut menggabungkan GSAP untuk animasi dengan JavaScript murni untuk mengatur logika navigasi tab. Ini memungkinkan animasi halus saat pengguna berpindah antar tab.
Artikel Lainnya Dengan Kategori Terkait :
3. 6 Cara Melakukan Loop Pada Array di JavaScript
5. Belajar Javascript #01 Belajar Menyisipkan Javascript Pada HTML menggunakan Metode Internal
6. Belajar Javascript #02 Belajar Menyisipkan Javascript Pada HTML Menggunakan Metode External
7. Belajar Javascript #03 Mendeklarasikan Variabel
8. Belajar Javascript #05 Menampilkan data di console
9. Belajar Javascript #06 Operator Aritmatika
10. Belajar Javascript #07 Assignment Operator
11. Belajar Javascript #08 String Operator
12. Belajar Javascript #09 Operator Perbandingan
13. Belajar Javascript #10 Operator Logika AND, OR, NOT, pada JavaScript
14. Belajar Javascript #11 Belajar Fungsi Pada Javascript
15. Belajar Javascript #12 Cara Mendeklarasikan Fungsi Pada Javascript
16. Belajar Javascript #13 Belajar Parameter & Argument Pada Javascript
17. Belajar Javascript #14 Belajar apa itu Function Hoisting pada javascript, dan contohnya
18. Belajar Javascript #15 Lingkup Global vs Lingkup Lokal
19. Belajar Javascript #16 Mengenal Objek Javascript
20. Belajar Javascript #17 Menggunakan Object Literal
21. Belajar Javascript #18 Mengakses properti Objek
22. Belajar Javascript #19 Menambah Properti Baru pada Objek
23. Belajar Javascript #20 Menghapus Properti Objek
24. Belajar Javascript #21 Object Method
25. Belajar Javascript #22 Mengenal Array
26. Belajar Javascript #23 Mendeklarasikan Array
27. Belajar Javascript #24 Nomor Index dan Jumlah Data Array
28. Belajar Javascript #25 Mengakses Data/Element di Dalam Array
29. Belajar Javascript #26 Mengubah Data/Element pada Array
30. Belajar Javascript #27 Array Method
31. Belajar Javascript #28 Mengenal Obejek Math
32. Belajar Javascript #29 Properti Objek Math
33. Belajar Javascript #30 Method Objek Math
34. Belajar Javascript #31 Apa Itu Condinational Dalam Javascript
35. Belajar Javascript #32 Menggunakan if, else if, dan else
36. Belajar Javascript #33 Menggunakan Switch Case
37. Belajar Javascript #34 Apa itu loop?
38. Belajar Javascript #35 Apa itu for loop?
39. Belajar Javascript #36 For/in Loop
40. Belajar Javascript #37 For/of Loop
41. Belajar Javascript #38 While Loop
42. Belajar Javascript #39 Do while loop
43. Belajar Javascript #40 Pengenalan JavaScript HTML DOM
44. Belajar Javascript #41 Mengakses Element HTML
45. Belajar Javascript #42 DOM Event
46. Belajar Javascript #43 Mengubah Element HTML
47. Belajar Javascript #44 ECMAScript
48. Belajar Javascript #45 let vs const vs var
49. Belajar Javascript #46 Template Literal
50. Belajar Javascript #47 Arrow Function
51. Belajar Javascript #48 Default Parameter
52. Belajar Javascript #49 Rest Parameter & Spread Operator
53. Belajar Javascript #50 Destrukturisasi
54. Belajar Javascript #51 Object Shorthand
55. Cara Install NodeJS dan Pengertian !
56. Cara Kerja Objek Dalam JavaScript
57. Cara Membuat Drag & Drop Dengan JS
58. Cara Menggunakan JavaScript Dengan Singkat
60. Function JavaScript Yang Harus Kalian Tahu
61. Getters & Setters Di JavaScript
62. HOW TO STYLE IN JAVASCRIPT
63. Implementasi Barcode menggunakan JsBarcode Pada JavaScript
65. Implementasi Password Generator Dalam JavaScript
66. Implementasi Penggunaan UseRef Pada React JS
67. Implementasi permintaan GET menggunakan XMLHttpRequest
69. JavaScript Function Apply()
70. JavaScript Notification API
71. JavaScript Template LIterals
73. Kinerja Supercharge Dengan Pekerja Web Menggunakan JavaScript
74. Kode Kilat JavaScript: Solusi Cepat dalam Satu Baris!
75. Kombinasi Scroll Magic dan Intersection Observer
76. Memahami dan Menerapkan Metode filter() dalam JavaScript
77. Memahami function bind pada JavaScript
78. Memahami function call () pada JavaScript
79. Memahami Konsep Dasar Hoisting pada JavaScript
80. Memahami Nama Properti Dinamis dalam JavaScript
81. Memahami Recursion JavaScript
82. Memahami Use Strict Pada JavaScript
83. Membuat Textarea dengan Tinggi Otomatis: Solusi Elegan untuk Pengalaman Pengguna yang Lebih Baik
84. Mempelajari Javascript #04 Tipe Data Javascript
85. Mempelajari Penggunaan Event Delegation Dalam JavaScript
86. Mengenal 4 Cara Untuk Melakukan Panggilan API
87. Mengenal Class Di JavaScript
88. MengenaL Macam-Macam String Dasar JavaScript
89. Mengenal Penggunaan Fungsi Pada JavaScript
90. Mengenal Penggunaan Spread Syntax Pada JavaScript
91. Mengenal Variabel Pada JavaScript
92. Mengenali Beberapa Macam Loop Pada JavaScript
93. Mengoptimalkan Kode Dengan Destructuring Assignment
94. Meningkatkan Interaktivitas dengan Pembuatan Tab Bar : Memperkaya Navigasi Website Anda
96. Metode Console yang Wajib Anda Ketahui
97. Metode flat() pada array di JavaScript
98. Operator Penyebaran JavaScript
99. Perbedaan InnerText dan InnerHTML dalam JavaScript
100. Tema Tab Responsif dengan Animasi: Meningkatkan Pengalaman Pengguna melalui Navigasi Dinamis
Ahmad Dika Zulfahmi - 18 Februari 2025
Jungler Tank Bisa Kembali? Update yang Bisa Membawa Jungler Tank ke Meta Lagi
Ahmad Dika Zulfahmi - 06 Februari 2025
Setting Sensitivitas Auto Headshot Free Fire Terbaik
Ahmad Dika Zulfahmi - 03 Februari 2025
Flash Sale Minaplay! Top Up Diamond Free Fire Murah & Cepat!