functions-new-landing.js 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. jQuery(document).ready(function($) {
  2. (function() {
  3. return;
  4. const sections = [
  5. document.getElementById('ch-ggs-web-suite-section-01'),
  6. document.getElementById('ch-ggs-web-suite-section-02'),
  7. document.getElementById('ch-ggs-web-suite-section-03'),
  8. ];
  9. const navItems = {
  10. 'ch-ggs-web-suite-section-01': document.getElementById('ch-ggs-web-suite-nav-item-01'),
  11. 'ch-ggs-web-suite-section-02': document.getElementById('ch-ggs-web-suite-nav-item-02'),
  12. 'ch-ggs-web-suite-section-03': document.getElementById('ch-ggs-web-suite-nav-item-03'),
  13. };
  14. // intersection observer setup
  15. // const observerOptions = {
  16. // root: null,
  17. // rootMargin: '0px',
  18. // threshold: 0.7,
  19. // };
  20. const observerOptions = {
  21. root:null,
  22. rootMargin: '0px 0px -100% 0px',
  23. threshold: 0
  24. };
  25. function observerCallback(entries, observer) {
  26. entries.forEach((entry) => {
  27. console.log(
  28. entry.target,
  29. entry.isIntersecting,
  30. entry.intersectionRatio
  31. );
  32. if (entry.isIntersecting) {
  33. // get the nav item corresponding to the id of the section
  34. // that is currently in view
  35. const navItem = navItems[entry.target.id];
  36. // add 'active' class on the navItem
  37. navItem.classList.add('active');
  38. // remove 'active' class from any navItem that is not
  39. // same as 'navItem' defined above
  40. Object.values(navItems).forEach((item) => {
  41. if (item != navItem) {
  42. item.classList.remove('active');
  43. }
  44. });
  45. }
  46. });
  47. }
  48. const observer = new IntersectionObserver(observerCallback, observerOptions);
  49. sections.forEach((sec) => observer.observe(sec));
  50. })();
  51. (function() {
  52. const sentinelEl = document.getElementById('ch-ggs-web-suite-landing-nav-trigger');
  53. const headerEl = document.getElementById('ch-ggs-web-suite-landing-nav');
  54. const stuckClass = 'stuck';
  55. const handler = (entries) => {
  56. if (headerEl) {
  57. if (!entries[0].isIntersecting) {
  58. headerEl.classList.add(stuckClass);
  59. } else {
  60. headerEl.classList.remove(stuckClass);
  61. }
  62. }
  63. }
  64. const observer = new window.IntersectionObserver(handler);
  65. observer.observe(sentinelEl);
  66. })();
  67. })