index.vue 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. <!-- @format -->
  2. <script setup lang="ts">
  3. import { debounce } from 'lodash-es'
  4. import { useCommonStore } from '@/stores/modules/common'
  5. const commonStore = useCommonStore()
  6. onMounted(() => {
  7. const sections = document.querySelectorAll('.data-section')
  8. const appScroller = document.getElementById('app-scroller')
  9. if (!appScroller)
  10. return
  11. const handleScroll = debounce(() => {
  12. const scrollPosition = appScroller.scrollTop + 72
  13. sections.forEach((section) => {
  14. const sectionTop = section.offsetTop
  15. const sectionHeight = section.offsetHeight
  16. if (scrollPosition >= sectionTop && scrollPosition < sectionTop + sectionHeight) {
  17. const newColor = section.dataset.sectionColor
  18. commonStore.setNavigateBgColor(newColor)
  19. }
  20. })
  21. }, 50)
  22. appScroller.addEventListener('scroll', handleScroll)
  23. onUnmounted(() => {
  24. appScroller.removeEventListener('scroll', handleScroll)
  25. })
  26. })
  27. </script>
  28. <template>
  29. <div>
  30. <business-home-banner />
  31. <business-home-solutions />
  32. <common-block-catalogs />
  33. <common-block-partner />
  34. <common-block-exhibited />
  35. <common-block-blog />
  36. <common-block-faq />
  37. <AppFooter />
  38. </div>
  39. </template>
  40. <style lang="less" scoped></style>