mobile.vue 994 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. <template>
  2. <div class="mobile-layout">
  3. <Header />
  4. <main class="mobile-layout-main">
  5. <slot />
  6. </main>
  7. <Footer />
  8. </div>
  9. </template>
  10. <script setup>
  11. import Header from '~/components/mobile/Header.vue'
  12. import Footer from '~/components/mobile/Footer.vue'
  13. const setRem = () => {
  14. if (!process.client) return
  15. const screenWidth = document.documentElement.clientWidth;
  16. const baseFontSize = screenWidth / 10;
  17. document.documentElement.style.fontSize = baseFontSize + 'px';
  18. }
  19. onMounted(() => {
  20. setRem()
  21. window.addEventListener('resize', setRem, { passive: true })
  22. })
  23. onBeforeUnmount(() => {
  24. if (process.client) window.removeEventListener('resize', setRem)
  25. })
  26. </script>
  27. <style scoped lang="scss">
  28. .mobile-layout {
  29. width: 100%;
  30. min-height: 100vh;
  31. background-color: #030014;
  32. display: flex;
  33. flex-direction: column;
  34. box-sizing: border-box;
  35. }
  36. .mobile-layout-main {
  37. flex: 1;
  38. width: 100%;
  39. padding: 54px 16px 16px;
  40. box-sizing: border-box;
  41. }
  42. </style>