iT邦幫忙

2023 iThome 鐵人賽

DAY 10
0

昨天聊到使用 Layout,讓編排版面更容易。今天就延伸昨日的成果,說明如何指定不同的 Layout 吧!

首先,倘若我今天有一個需求就是只在頁面顯示資訊,不要顯示 Header 和 Footer,這樣我就可以把在這個 Layout 下,客製化一些展示用的資訊。

先新增一個名為 info 的 Layout,路徑為 @/layouts/info.vue

<template>
  <section class="mx-auto max-w-3xl px-4 sm:px-6 xl:max-w-4xl xl:px-0 xl:text-lg">
    <div class="flex h-screen flex-col justify-between font-sans">
      <main class="mb-auto">
        <slot />
      </main>
    </div>
  </section>
</template>

接著新增一個名為 me 的 page,路徑為 @/page/me.vue。並在 @/public/img 目錄下放置一個 avatar.png 的頭像圖檔。

<template>
  <div class="flex h-screen">
    <div class="m-auto md:mt-24 text-center">
      <div>
        <NuxtLink to="/">
          <div class="pb-5 text-center">
            <img
              src="/img/avatar.png"
              alt="avatar"
              class="rounded-full h-48 mx-auto"
            />
          </div>
          <div class="justify-center">
            <h1 class="text-3xl">Yuehu Lin</h1>
          </div>
          <div class="justify-center">
            <p class="text-xl">Ironman 2023</p>
          </div>
        </NuxtLink>
      </div>
    </div>
  </div>
</template>

<script setup>
definePageMeta({
  layout: "info",
});
</script>

這樣我就做出一個類似名片的頁面,點選頭像就可以進到 Digital Garden 囉!

這個範例就展示了透過 definePageMeta() 的方式在當前頁面更換 layout。

definePageMeta({
  layout: "layout-name",
});

另外也可以在使用 <PageLayout /> 時去指定,但在本次案例就難以配合,兩者適用的情境不太一樣。

<template>
  <NuxtLayout layout="info">
    <NuxtPage/>
  </NuxtLayout>  
</template>

上一篇
加入 Layout,讓編排版面更容易
下一篇
透過 frontmatter 建立屬性,搭配模板更便利
系列文
用 Nuxt Content 搭配 Obsidian 建立自己的 Digital Garden30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言