navbar.js 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. const updateNavBar = () => {
  2. const topNavbar = document.getElementById('top-navbar')
  3. const navbarToggler = document.getElementById('navbar-toggler')
  4. const themeIcon = document.getElementById('navbar-theme-icon-svg')
  5. if (window.scrollY > 40) {
  6. topNavbar?.classList.remove('initial-navbar')
  7. topNavbar?.classList.add('final-navbar', 'shadow')
  8. navbarToggler?.classList.remove('navbar-dark')
  9. navbarToggler?.classList.add('navbar-light')
  10. // color theme selector a.k.a. dark mode
  11. themeIcon?.classList.remove('navbar-icon-svg-dark')
  12. // get the main logo from hidden img tag
  13. const mainLogo = document.getElementById('main-logo')
  14. if (mainLogo) {
  15. const logoURL = mainLogo.getAttribute('src')
  16. document.getElementById('logo')?.setAttribute('src', logoURL)
  17. }
  18. } else {
  19. topNavbar?.classList.remove('final-navbar', 'shadow')
  20. topNavbar?.classList.add('initial-navbar')
  21. navbarToggler?.classList.remove('navbar-light')
  22. navbarToggler?.classList.add('navbar-dark')
  23. // color theme selector a.k.a. dark mode
  24. themeIcon?.classList.add('navbar-icon-svg-dark')
  25. // get the inverted logo from hidden img tag
  26. const invertedLogo = document.getElementById('inverted-logo')
  27. if (invertedLogo) {
  28. const logoURL = invertedLogo.getAttribute('src')
  29. document.getElementById('logo')?.setAttribute('src', logoURL)
  30. }
  31. }
  32. }
  33. document.addEventListener('DOMContentLoaded', function () {
  34. // change navbar style on scroll
  35. // ==================================================
  36. // When the user scrolls down 80px from the top of the document,
  37. // resize the navbar's padding and the logo's font size
  38. document.addEventListener('scroll', updateNavBar)
  39. // Creates a click handler to collapse the navigation when
  40. // anchors in the mobile nav pop up are clicked
  41. const navMain =document.getElementsByClassName('navbar-collapse')
  42. Array.from(navMain).forEach(function(el) {
  43. el.addEventListener('click', function (e) {
  44. if (e.target.tagName === 'A') {
  45. el.classList.add('collapse')
  46. }
  47. })
  48. })
  49. updateNavBar()
  50. })