mcpField
S
slidev-transitions

slidev-transitions

github.com/yoanbernabeu文档处理41216 次安装39 周前更新
代码仓库

关于 slidev-transitions

slidev-transitions 是用于配置 Slidev 演示文稿页面过渡效果的技能,涵盖内置效果、方向性过渡和自定义 CSS 动画。

主要功能

  1. 01全局及单页过渡设置
  2. 02内置淡入淡出与滑动效果
  3. 03分别设置前进和后退效果
  4. 04自定义 CSS 过渡类
  5. 05调整过渡时长与缓动

适用场景

  1. 01为演示文稿设置统一过渡
  2. 02为前进和后退导航配置不同效果
  3. 03创建自定义 CSS 页面动画
  4. 04调整过渡时长

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/yoanbernabeu/slidev-skills --skill slidev-transitions

安装后在 Claude Code 中输入/slidev-transitions确认已加载。

详细介绍

Slidev 中的幻灯片过渡效果

本技能介绍如何在 Slidev 中为幻灯片添加平滑过渡效果,包括内置过渡效果、自定义动画和方向性过渡效果。

何时使用此技能

  • 为演示文稿润色
  • 创建流畅的导航体验
  • 突出幻灯片切换
  • 匹配演示文稿主题
  • 创建独特的视觉效果

设置过渡效果

全局过渡效果(Frontmatter)
---
transition: slide-left
---

应用于演示文稿中的所有幻灯片。

单页过渡效果
---
transition: fade
---

# This slide fades in

---
transition: slide-up
---

# This slide slides up
与分隔符内联设置
# Slide 1

---
transition: zoom
---

# Slide 2 (zooms in)

内置过渡效果

淡入淡出过渡效果
名称效果
fade简单的淡入/淡出
fade-out淡出后出现
---
transition: fade
---
滑动过渡效果
名称效果
slide-left新幻灯片从右侧进入
slide-right新幻灯片从左侧进入
slide-up新幻灯片从底部进入
slide-down新幻灯片从顶部进入
---
transition: slide-left
---
视图过渡效果

使用现代 View Transitions API:

---
transition: view-transition
---

注意:需要浏览器支持 View Transitions API。

方向性过渡效果

前进/后退使用不同效果

使用 | 分隔前进和后退过渡效果:

---
transition: slide-left | slide-right
---
  • 前进时:幻灯片向左滑动
  • 后退时:幻灯片向右滑动
常见模式
# Natural slide direction
---
transition: slide-left | slide-right
---

# Vertical navigation
---
transition: slide-up | slide-down
---

# Fade forward, slide back
---
transition: fade | slide-right
---

自定义过渡效果

基于 CSS 的自定义过渡效果

创建 styles/index.css:

/* Define custom transition */
.my-transition-enter-active,
.my-transition-leave-active {
  transition: all 0.5s ease;
}

.my-transition-enter-from {
  opacity: 0;
  transform: translateX(100px) rotate(10deg);
}

.my-transition-leave-to {
  opacity: 0;
  transform: translateX(-100px) rotate(-10deg);
}

在 frontmatter 中使用:

---
transition: my-transition
---
过渡类

Slidev 使用 Vue 过渡类:

类应用时机
[name]-enter-from进入过渡的起始状态
[name]-enter-active进入过渡期间
[name]-enter-to进入过渡的结束状态
[name]-leave-from离开过渡的起始状态
[name]-leave-active离开过渡期间
[name]-leave-to离开过渡的结束状态

过渡效果示例

缩放过渡效果
.scale-enter-active,
.scale-leave-active {
  transition: all 0.4s ease;
}

.scale-enter-from {
  opacity: 0;
  transform: scale(0.8);
}

.scale-leave-to {
  opacity: 0;
  transform: scale(1.2);
}
翻转过渡效果
.flip-enter-active,
.flip-leave-active {
  transition: all 0.6s ease;
  transform-style: preserve-3d;
}

.flip-enter-from {
  opacity: 0;
  transform: rotateY(-90deg);
}

.flip-leave-to {
  opacity: 0;
  transform: rotateY(90deg);
}
模糊过渡效果
.blur-enter-active,
.blur-leave-active {
  transition: all 0.5s ease;
}

.blur-enter-from {
  opacity: 0;
  filter: blur(20px);
}

.blur-leave-to {
  opacity: 0;
  filter: blur(20px);
}
弹跳过渡效果
.bounce-enter-active {
  animation: bounce-in 0.5s;
}

.bounce-leave-active {
  animation: bounce-out 0.5s;
}

@keyframes bounce-in {
  0% {
    opacity: 0;
    transform: scale(0.3);
  }
  50% {
    transform: scale(1.1);
  }
  100% {
    opacity: 1;
    transform: scale(1);
  }
}

@keyframes bounce-out {
  0% {
    opacity: 1;
    transform: scale(1);
  }
  100% {
    opacity: 0;
    transform: scale(0.3);
  }
}
滑入过渡效果
.swipe-enter-active,
.swipe-leave-active {
  transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);
}

.swipe-enter-from {
  opacity: 0;
  transform: translateX(100%);
}

.swipe-leave-to {
  opacity: 0;
  transform: translateX(-100%);
}

View Transitions API

基本用法
---
transition: view-transition
---
命名视图过渡效果
<div style="view-transition-name: hero">
  Content that transitions smoothly
</div>

连续幻灯片上具有相同 view-transition-name 的元素会在位置之间进行动画过渡。

实际示例
---
transition: view-transition
---

<div style="view-transition-name: card" class="w-32 h-32 bg-blue-500">
  Small card
</div>

---
transition: view-transition
---

<div style="view-transition-name: card" class="w-64 h-64 bg-blue-500">
  Card grows!
</div>

过渡效果时序

持续时间
.slow-fade-enter-active,
.slow-fade-leave-active {
  transition: all 1s ease; /* 1 second */
}
缓动函数
/* Common easing functions */
.ease-in { transition-timing-function: ease-in; }
.ease-out { transition-timing-function: ease-out; }
.ease-in-out { transition-timing-function: ease-in-out; }
.linear { transition-timing-function: linear; }

/* Cubic bezier for custom easing */
.custom { transition-timing-function: cubic-bezier(0.68, -0.55, 0.265, 1.55); }
延迟
.delayed-enter-active {
  transition: all 0.5s ease 0.2s; /* 0.2s delay */
}

按幻灯片类型设置过渡效果

不同内容使用不同过渡效果
---
layout: cover
transition: fade
---

# Title Slide

---
layout: default
transition: slide-left
---

# Content Slide

---
layout: section
transition: zoom
---

# Section Break

---
layout: end
transition: fade
---

# Thank You

禁用过渡效果

不使用过渡效果
---
transition: none
---
全局禁用
---
transition: false
---

最佳实践

1. 保持一致

在整个演示文稿中使用同一类过渡效果:

# Good: Consistent slide family
---
transition: slide-left | slide-right
---
2. 匹配内容类型
内容建议的过渡效果
封面/标题fade
常规内容slide-left
章节分隔页fade 或 zoom
演示/代码fade
结尾页fade
3. 保持低调

❌ 过于炫目

.crazy-enter-active {
  animation: spin 2s, bounce 1s, flash 0.5s;
}

✓ 专业

.subtle-enter-active {
  transition: opacity 0.3s ease;
}
4. 考虑受众
  • 技术演示文稿:尽量少用过渡效果
  • 创意演示文稿:可更自由地使用
  • 长篇演示文稿:减少干扰性效果
5. 测试性能

复杂的过渡效果可能会在以下情况下出现卡顿:

  • 大型演示文稿
  • 较旧的设备
  • 导出为 PDF 时

过渡效果预设

专业风格
/* styles/transitions.css */

/* Gentle fade */
.pro-fade-enter-active,
.pro-fade-leave-active {
  transition: opacity 0.3s ease;
}
.pro-fade-enter-from,
.pro-fade-leave-to {
  opacity: 0;
}

/* Smooth slide */
.pro-slide-enter-active,
.pro-slide-leave-active {
  transition: all 0.35s ease-out;
}
.pro-slide-enter-from {
  opacity: 0;
  transform: translateX(30px);
}
.pro-slide-leave-to {
  opacity: 0;
  transform: translateX(-30px);
}
活泼风格
/* Energetic bounce */
.playful-enter-active {
  animation: pop-in 0.4s cubic-bezier(0.68, -0.55, 0.265, 1.55);
}

@keyframes pop-in {
  0% { transform: scale(0); opacity: 0; }
  80% { transform: scale(1.1); }
  100% { transform: scale(1); opacity: 1; }
}

输出格式

配置过渡效果时:

---
# GLOBAL TRANSITION (first slide)
transition: [transition-name] | [backward-transition]
---

# Slide content...

---
# PER-SLIDE OVERRIDE (if needed)
transition: [different-transition]
---

# Different slide content...

过渡效果方案:

  1. 封面页:[过渡效果]
  2. 内容页:[过渡效果]
  3. 章节分隔页:[过渡效果]
  4. 结尾页:[过渡效果]

自定义 CSS(如需要):

.[name]-enter-active { ... }
.[name]-leave-to { ... }

评论

支持 Markdown