--- name: slidev-transitions description: Add smooth slide transitions in Slidev. Use this skill for fade, slide, and custom transitions between slides. --- # Slide Transitions in Slidev This skill covers adding smooth transitions between slides in Slidev, including built-in transitions, custom animations, and directional transitions. ## When to Use This Skill - Adding polish to presentations - Creating smooth navigation experiences - Emphasizing slide changes - Matching presentation themes - Creating unique visual effects ## Setting Transitions ### Global Transition (Frontmatter) ```yaml --- transition: slide-left --- ``` Applied to all slides in the presentation. ### Per-Slide Transition ```markdown --- transition: fade --- # This slide fades in --- transition: slide-up --- # This slide slides up ``` ### Inline with Separator ```markdown # Slide 1 --- transition: zoom --- # Slide 2 (zooms in) ``` ## Built-in Transitions ### Fade Transitions | Name | Effect | |------|--------| | `fade` | Simple fade in/out | | `fade-out` | Fade out, then appear | ```markdown --- transition: fade --- ``` ### Slide Transitions | Name | Effect | |------|--------| | `slide-left` | New slide enters from right | | `slide-right` | New slide enters from left | | `slide-up` | New slide enters from bottom | | `slide-down` | New slide enters from top | ```markdown --- transition: slide-left --- ``` ### View Transition Uses the modern View Transitions API: ```markdown --- transition: view-transition --- ``` **Note**: Requires browser support for View Transitions API. ## Directional Transitions ### Forward/Backward Different Use `|` to separate forward and backward transitions: ```markdown --- transition: slide-left | slide-right --- ``` - Going forward: slides left - Going backward: slides right ### Common Patterns ```markdown # Natural slide direction --- transition: slide-left | slide-right --- # Vertical navigation --- transition: slide-up | slide-down --- # Fade forward, slide back --- transition: fade | slide-right --- ``` ## Custom Transitions ### CSS-based Custom Transition Create `styles/index.css`: ```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); } ``` Use in frontmatter: ```yaml --- transition: my-transition --- ``` ### Transition Classes Slidev uses Vue transition classes: | Class | When Applied | |-------|--------------| | `[name]-enter-from` | Starting state for enter | | `[name]-enter-active` | During enter transition | | `[name]-enter-to` | Ending state for enter | | `[name]-leave-from` | Starting state for leave | | `[name]-leave-active` | During leave transition | | `[name]-leave-to` | Ending state for leave | ## Transition Examples ### Scale Transition ```css .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 Transition ```css .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 Transition ```css .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 Transition ```css .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 Transition ```css .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 ### Basic Usage ```yaml --- transition: view-transition --- ``` ### Named View Transitions ```markdown