Install Web App

Meningkatkan Interaktivitas dengan Pembuatan Tab Bar : Memperkaya Navigasi Website Anda

profil-penulis

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:

  1. 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.

  2. Konten: Konten yang sesuai dengan setiap tab akan ditampilkan ketika tab tersebut diaktifkan. Ini bisa berupa teks, gambar, formulir, atau konten web lainnya.

1. Code HTML

<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:

  1. 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.

  2. 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.

    • Setiap tombol memiliki teks yang berbeda, masing-masing mewakili kategori yang berbeda.
    • Kelas "active" diberikan pada elemen pertama (<li>) untuk menunjukkan bahwa kategori "Animation" sedang aktif atau dipilih.
  3. Script: Ini mengimpor skrip JavaScript dari GSAP (GreenSock Animation Platform) untuk menambahkan fungsi animasi ke dalam dokumen.

    • GSAP adalah perpustakaan JavaScript yang kuat untuk membuat animasi pada elemen HTML. Dengan mengimpor skrip ini, Anda dapat menggunakan fitur animasi GSAP dalam dokumen HTML Anda.

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.

2. Code CSS

/* 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:

  1. Styling untuk <nav>, <ul>, dan <li>:

    • Mengatur tampilan daftar menjadi horizontal dan menghilangkan spasi dan bullet menggunakan display: flex, margin, padding, dan list-style.
    • Menetapkan jarak antara elemen-elemen dengan gap.
  2. Styling untuk Tombol Tab (<button>)

    • Menghapus gaya default sistem operasi menggunakan appearance: none;.
    • Mengatur properti seperti border, cursor, background-color, padding, margin, font, dan warna teks.
  3. Styling untuk Tombol Tab Aktif:

    • Mengubah warna teks tombol menjadi putih saat tombol aktif.
  4. Styling untuk Tombol Tab Non-Aktif saat Hover:

    • Mengubah warna teks tombol menjadi abu-abu saat tombol tidak aktif dihover.
  5. Styling untuk Elemen yang Menandai Tab Aktif (active-element)

    • Mengatur posisi, dimensi, dan warna elemen yang menandai tab aktif.
    • Menggunakan variabel CSS untuk mengatur properti-properti seperti opacity, width, dan transformasi.
  6. Styling untuk Struktur Anak-anak dari Elemen yang Menandai Tab Aktif (active-element > svg)

    • Mengatur tampilan, dimensi, dan transformasi dari struktur anak-anak SVG.
    • Mengatur overflow menjadi visible untuk memastikan konten tidak dipotong.
  7. Styling untuk Animasi Garis Pada Elemen yang Menandai Tab Aktif

    • Mengatur efek animasi garis menggunakan mask image, transformasi, dan blur filter.
  8. Styling untuk Transformasi Elemen Sebelum Elemen yang Menandai Tab Aktif

    • Mengatur rotasi untuk mengubah orientasi elemen sebelum elemen yang menandai tab aktif.

3. Code JavaScript

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:

  1. 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.
  2. 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.
  3. 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.
  4. 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.
  5. 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.
    • Dalam handler klik, program mengambil indeks tombol tab yang diklik dan menghitung arah animasi berdasarkan perubahan indeks tersebut. Juga, menyesuaikan kelas CSS pada elemen navigasi sesuai dengan arah pergerakan.

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 :


1. 4 Ways to Make an API Call

2. 5 Tips Menarik Javascript

3. 6 Cara Melakukan Loop Pada Array di JavaScript

4. Array Pada 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

59. Fitur JavaScript Modern

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

64. Implementasi Kegunaan Accordion JavaScript: Meningkatkan Interaktivitas dan Pengalaman Pengguna pada Website

65. Implementasi Password Generator Dalam JavaScript

66. Implementasi Penggunaan UseRef Pada React JS

67. Implementasi permintaan GET menggunakan XMLHttpRequest

68. JavaScript Array flatMap

69. JavaScript Function Apply()

70. JavaScript Notification API

71. JavaScript Template LIterals

72. JavaScript Use Strict

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

95. Metode Console Pro

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

101. Tipe Data Java Script

102. Tips Menulis JavaScript

103. Tips Rapi Dalam Pengembangan JavaScript

104. Web APIs Di JavaScript

Masuk Terlebih dahulu untuk berkomentar

Paling baru
Lihat Lainnya