app.vue 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. <template>
  2. <NuxtLayout>
  3. <v-app>
  4. <div id="top" />
  5. <div class="topbar-container">
  6. <Topbar />
  7. </div>
  8. <div class="body">
  9. <NuxtPage />
  10. <BackToTheTop />
  11. </div>
  12. <v-footer no-gutters :height="36">
  13. </v-footer>
  14. </v-app>
  15. </NuxtLayout>
  16. </template>
  17. <script setup lang="ts">
  18. const route = useRoute()
  19. useHead(() => ({
  20. link: [
  21. {
  22. rel: 'canonical',
  23. href: 'https://olivier.massot.net' + route.path,
  24. },
  25. ],
  26. }))
  27. </script>
  28. <style scoped lang="scss">
  29. html {
  30. scroll-behavior: smooth;
  31. }
  32. .v-application {
  33. background: rgb(var(--v-theme-neutral));
  34. color: rgb(var(--v-theme-on-neutral));
  35. }
  36. .body, .topbar {
  37. margin: 0 20%;
  38. max-width: 100%;
  39. @media (max-width: 1280px) {
  40. margin: 0 10%;
  41. }
  42. @media (max-width: 600px) {
  43. margin: 0 3%;
  44. }
  45. }
  46. .body {
  47. padding: 18px;
  48. display: flex;
  49. flex-direction: column;
  50. flex: 1;
  51. }
  52. .topbar-container {
  53. border-bottom: solid 1px rgba(var(--v-theme-on-neutral), 0.2);
  54. margin-bottom: 3rem;
  55. position: sticky;
  56. top: 0;
  57. background: rgb(var(--v-theme-neutral));
  58. z-index: 1000;
  59. }
  60. :deep(h2) {
  61. margin: 48px 0 24px 0;
  62. padding-bottom: 9px;
  63. border-bottom: solid 1px rgba(var(--v-theme-on-neutral), 0.2);
  64. @media (max-width: 600px) {
  65. margin: 24px 0;
  66. }
  67. }
  68. .v-footer {
  69. max-height: 36px;
  70. display: flex;
  71. flex-direction: row;
  72. justify-content: center;
  73. border-top: rgb(var(--v-theme-neutral-strong));
  74. font-size: 12px;
  75. a {
  76. color: rgb(var(--v-theme-on-neutral));
  77. }
  78. span {
  79. margin: 0 24px;
  80. }
  81. }
  82. </style>