App.vue 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. <script setup>
  2. import { RouterView } from 'vue-router'
  3. import zhCn from 'element-plus/dist/locale/zh-cn.mjs'
  4. import { useWindowSize } from '@vueuse/core'
  5. import { computed, provide } from 'vue'
  6. const { width } = useWindowSize()
  7. const size = computed(() => {
  8. return width.value > 768 ? 'small' : 'medium'
  9. })
  10. const isMobile = computed(() => {
  11. return width.value <= 768
  12. })
  13. provide('isMobile', isMobile)
  14. </script>
  15. <template>
  16. <ElConfigProvider :locale="zhCn">
  17. <RouterView />
  18. </ElConfigProvider>
  19. </template>
  20. <style scoped>
  21. header {
  22. line-height: 1.5;
  23. max-height: 100vh;
  24. }
  25. .logo {
  26. display: block;
  27. margin: 0 auto 2rem;
  28. }
  29. nav {
  30. width: 100%;
  31. font-size: 12px;
  32. text-align: center;
  33. margin-top: 2rem;
  34. }
  35. nav a.router-link-exact-active {
  36. color: var(--color-text);
  37. }
  38. nav a.router-link-exact-active:hover {
  39. background-color: transparent;
  40. }
  41. nav a {
  42. display: inline-block;
  43. padding: 0 1rem;
  44. border-left: 1px solid var(--color-border);
  45. }
  46. nav a:first-of-type {
  47. border: 0;
  48. }
  49. @media (min-width: 1024px) {
  50. header {
  51. display: flex;
  52. place-items: center;
  53. padding-right: calc(var(--section-gap) / 2);
  54. }
  55. .logo {
  56. margin: 0 2rem 0 0;
  57. }
  58. header .wrapper {
  59. display: flex;
  60. place-items: flex-start;
  61. flex-wrap: wrap;
  62. }
  63. nav {
  64. text-align: left;
  65. margin-left: -1rem;
  66. font-size: 1rem;
  67. padding: 1rem 0;
  68. margin-top: 1rem;
  69. }
  70. }
  71. </style>