Membuat navbar dengan vanilla script

Pernah bekerja dengan vanilla script? Di banding dengan Javascript ia lebih muda dan tentunya lebih modern. 

Jujur ketika membicarakan interest saya, saya sadar topik seperti ini kurang peminatnya alias kurang popular walaupun di zaman now yakni zamannya ibu ibu kita, tetapi zaman next, yaitu zaman generasi Z ke generasi Alpha di masa depan - dimana para ahli sepakat: TIDAK BISA KODING = BUTA HURUF. Terdengar sadis bagi sebagian orang yang masih hidup di zaman 'mak mak' kita, zamannya membaca text, tetapi hal itu memang menggambarkan seperti apa orientasi teknologi di masa depan.

Bagi saya sudah cukup pusing untuk memahami mengapa beberapa situs besar mulai menggunakan VanillaScript dan apa bedanya dengan JavaScript, Angular dan Jquerry? Saya sedikit mulai terbiasa dengan JavaScript dan jadi panasaran, pasti kalian juga kalau berada diposisi yang sama dengan saya.

Konon Vanilla Script mampu melipat-gandakan kecepatan, Oh my Gosh! 

Setelah Web Assembly di klaim dan terbukti sangat cepat kini Vanilla script diklaim memiliki kemampuan lebih daripada "pendahulunya" yakni JavaScript tetapi benarkah dia adalah bahasa pemrograman web? Saya rasa bukan. Lalu apa namanya? Markup?

Akan tetapi ia juga disebut sebagai vanilla JS, artinya Javascript banget. Namun lebih ringan dan lebih enteng. Mari kita bahas dahulu perbedaan dan persamaannya.

vanilla script

1.JavaScript

Jangan bingung dulu, jika kita bicara mengenai JavaScript ini tidak ada hubungannya dengan bahasa program Java ya, Java dibangun sebagai sebuah bahasa yang berdiri disisi perangkat pengguna, Sedangkan JavaScript secara umum dipergunakan untuk memanipulasi “Document Object Model” (DOM), yang meliputi elemen-elemen pada sebuah laman web. Oh jadi dia bahasa markup? 

Jadi, JS (JavaScript) itu adalah sebuah bahasa pemrograman yang dirancang untuk penggunaan pada browser (peramban) web. Kebanyakan Blogger pasti mengerti hal itu.

JavaScript dieksekusi pada client side (sisi pengguna = komputer pengguna): Sebuah server website mengirim JavaScript ke peramban milik pengguna, dan peramban tersebut menginterpretasikan dan menjalankan kodenya.

Semuanya terjadi dalam sebuah sandbox, yang menjaga agar JavaScript tidak menyentuh internal sistem dan mencegah malicious code (kode jahat) menginfeksi komputer pengguna.

2. Vanilla Script

Vanilla Script atau Vanilla JS itu sebenarnya adalah sama saja dengan Java Script, dia hanya memaintain setiap bait daripada kode dalam framework dan terus di maintain agar menjadi lebih kecil namun intuitif, sehingga memang lebih cepat daripada JavaScript, dibawah ini daftar situs pengguna vanilla:

  1. Facebook
  2. Google
  3. YouTube
  4. Yahoo
  5. Wikipedia
  6. Windows Live
  7. Twitter
  8. Amazon
  9. LinkedIn
  10. MSN
  11. eBay
  12. Microsoft
  13. Tumblr
  14. Apple
  15. Pinterest
  16. PayPal
  17. Reddit
  18. Netflix
  19. Stack Overflow
  20. DLL

Faktanya ketimbang kombinasi jQuery, Prototype Js, YUI, dan Web Toolkit, maka Vanilla telah dipergunakan oleh website-website besar secara umum. Terakhir saya baca Boostrap versi teranyar menggunakan Vanilla Script (atau Vanilla JS)

Oh jadi kita ketinggalan zaman gara gara kurang update? Saya periksa template yang saya buat, saya pakai JavaScript dan jQuery saya tidak ada gambaran bagaimana menggantikannya dengan vanilla he he he...

Bahkan saya belum mencoba menerapkannya, ternyata dia seperti bagian dari JavaScript secara terpisah dan terkadang direferensikan sebagai library , contoh kodenya dapat di pasang ke dalam HTML jika ingin menggunakan Vanilla:

<script src="path/to/vanilla.js"></script>

JavaScript banget ya...so, sebagian orang masih berpendapat: it's not really a framework or a library. 

3. Membuat navbar dengan vanilla script

wah bisa gak sih vanilla script di pasang ke blogger? Jika ia librari apakah kita harus pasang eksternal link? Itu dia persoalannya tadi.

Tentu saja bisa karena ia hanyalah javascript yang bekerja lebih detail di dalam framework, dan vanilla dapat bekerja di dalam halaman HTML blog, misalnya ketika kita ingin membentuk sebuah navbar dari sebuah navigasi menu, contohnya kita dapat meletakan vanilla script berikut di atas kode </body> di halaman HTML blogger:

    <script>const nav = document.querySelector(&quot;nav&quot;);
const supportPageOffset = window.pageXOffset !== undefined;
const isCSS1Compat = (document.compatMode || &quot;&quot;) === &quot;CSS1Compat&quot;;

let previousScrollPosition = 0;

const isScrollingDown = () =&gt; {
  let scrolledPosition = supportPageOffset
    ? window.pageYOffset
    : isCSS1Compat
    ? document.documentElement.scrollTop
    : document.body.scrollTop;
  let isScrollDown;

  if (scrolledPosition &gt; previousScrollPosition) {
    isScrollDown = true;
  } else {
    isScrollDown = false;
  }
  previousScrollPosition = scrolledPosition;
  return isScrollDown;
};

const handleNavScroll = () =&gt; {
  if (isScrollingDown() &amp;&amp; !nav.contains(document.activeElement)) {
    nav.classList.add(&quot;scroll-down&quot;);
    nav.classList.remove(&quot;scroll-up&quot;);
  } else {
    nav.classList.add(&quot;scroll-up&quot;);
    nav.classList.remove(&quot;scroll-down&quot;);
  }
};

var throttleTimer;

const throttle = (callback, time) =&gt; {
  if (throttleTimer) return;

  throttleTimer = true;
  setTimeout(() =&gt; {
    callback();
    throttleTimer = false;
  }, time);
};

const mediaQuery = window.matchMedia(&quot;(prefers-reduced-motion: reduce)&quot;);

window.addEventListener(&quot;scroll&quot;, () =&gt; {
  if (mediaQuery &amp;&amp; !mediaQuery.matches) {
    throttle(handleNavScroll, 250);
  }
});</script>

Letakan di atas </body>, demikian struktur template blogger telah tertata.

Jadi kita segera tahu kode tersebut telah di parse, ya disitu persoalanya tapi faktanya ia bekerja dengan baik. Artinya itu adalah Javascript yang bernama vanilla script. Akan tetapi karena ia bekerja dengan cara berbeda dalam framework, maka kita mengenalinya sebagai vanilla script.

Lalu Pasang  kode CSS berikut di atas kode </head>:

    <style>body {
  margin: 0;
  font-family: &#39;Lato&#39;, sans-serif;
}

* {
  box-sizing: border-box;
}

nav {
  position: sticky;
  top: 0;
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
  padding: 1.5rem 2rem;
  background-color: #eaeaea;
  transition: top 500ms ease-in-out;
      z-index:2000;
}

nav.scroll-up,
nav:focus-within {
  top: 0;
}

nav.scroll-down {
  top: -100%;
}

.links {
  display: flex;
  margin: 0 -1em;
}

.links a {
  display: inline-block;
  margin: 0 1em;
}

.logo {
  font-weight: bold;
  text-transform: uppercase;
  letter-spacing: 0.2em;
}

nav a {
  color: #0f0f0f;
  text-decoration: none;
  font-size: 0.9rem;
  text-transform: uppercase;
  letter-spacing: 0.2em;
}

section {
  width: 65%;
  margin: 0 auto;
}

section h1 {
  font-size: 2rem;
}

section p {
  font-size: 1.25rem;
  line-height: 140%;
}

footer {
  padding: 1em;
  text-align: center;
  background-color: #FFDFB9;
}

footer a {
  color: inherit;
  text-decoration: none;
}

footer .heart {
  color: #DC143C;
}</style>

Terakhir letakan kode HTML berikut di bawah kode <body>:

<nav>
  <div class='logo'>
    <data:blog.title/>
  </div>
  <div class='links'>
    <a href=''>Link 1</a>
    <a href=''>Link 2</a>
    <a href=''>Link 3</a>
    <a href=''>Link 4</a>
  </div>
</nav>

Penutup:

Di atas tadi saya ada mengutip kata kata ahli, yakni: "Di masa depan tidak bisa koding sama saja seperti buta huruf" well, terserah kita mau setuju atau tidak, tapi waktu akan terus merambat ke masa depan dan lajunya tidak bisa ditahan oleh kita.

Buta huruf modern adalah: orang yang tidak mau membuka pikirannya, taklid dan merasa dirinya saja yang paling benar. Tidak mau belajar ilmu diluar keyakinannya, tidak perduli yang penting orang lain harus sama dengan dirinya. Jika tidak akan dianggap bukan golongannya. Padahal bagiamana dia akan melawan lawan lawannya jika dia tidak menguasai ilmu mereka?

Ikuti terus trik, tips, teknik hack dan kabar terupdate dari blog ini! Share:

1 Komentar

Silahkan berkomentar sesuai dengan topik kita ya...

Lebih baru Lebih lama

Formulir Kontak