Skip to content

全局图层

全局图层允许你创建跨幻灯片持久存在的自定义组件。这对于添加页脚、跨幻灯片动画、全局效果等非常有用。

Slidev 为此提供了三个图层,在你的项目根目录下创建 global-top.vueglobal-bottom.vuecustom-nav-controls.vue,它会自动被识别。

还有针对每张幻灯片的图层:slide-top.vueslide-bottom.vue。用法与全局图层类似,但它们会应用到每张幻灯片,因此可能有多个实例。

TIP

如果你使用的 global-top.vueglobal-bottom.vue 依赖于当前的导航状态,在导出时应该使用 --per-slide 选项来确保正确的状态应用到每张幻灯片。或者你可以改用 slide-top.vueslide-bottom.vue

图层关系

在 z 轴上,从上到下:

  • NavControls
    • 自定义导航控件 (custom-nav-controls.vue)
  • 全局顶层 (global-top.vue) - 单实例
  • 幻灯片顶层 (slide-top.vue) - 每张幻灯片一个实例
  • 幻灯片内容
  • 幻灯片底层 (slide-bottom.vue) - 每张幻灯片一个实例
  • 全局底层 (global-bottom.vue) - 单实例

示例

html
<!-- global-bottom.vue -->
<template>
  <footer class="absolute bottom-0 left-0 right-0 p-2">Your Name</footer>
</template>

文本 Your Name 将出现在所有幻灯片上。

html
<!-- custom-nav-controls -->
<template>
  <button class="icon-btn" title="Next" @click="$nav.next">
    <div class="i-carbon:arrow-right" />
  </button>
</template>

Next 按钮将出现在 NavControls 中。

要有条件地启用它,你可以使用 📖 全局上下文

html
<!-- 从第 4 页隐藏页脚 -->
<template>
  <footer
    v-if="$nav.currentPage !== 4"
    class="absolute bottom-0 left-0 right-0 p-2"
  >
    Your Name
  </footer>
</template>
html
<!-- 从 "cover" 布局隐藏页脚 -->
<template>
  <footer
    v-if="$nav.currentLayout !== 'cover'"
    class="absolute bottom-0 left-0 right-0 p-2"
  >
    Your Name
  </footer>
</template>
html
<!-- 页面页脚示例 -->
<template>
  <footer
    v-if="$nav.currentLayout !== 'cover'"
    class="absolute bottom-0 left-0 right-0 p-2"
  >
    {{ $nav.currentPage }} / {{ $nav.total }}
  </footer>
</template>
html
<!-- custom-nav-controls -->
<!-- 在演讲者模式下隐藏按钮 -->
<template>
  <button v-if="!$nav.isPresenter" class="icon-btn" title="Next" @click="$nav.next">
    <div class="i-carbon:arrow-right" />
  </button>
</template>

Released under the MIT License.