13 KiB
theme | background | title | info | class | highlighter | drawings | transition | mdc | ||
---|---|---|---|---|---|---|---|---|---|---|
seriph | https://cover.sli.dev | Welcome to Slidev | ## Slidev Starter Template Presentation slides for developers. Learn more at [Sli.dev](https://sli.dev) | text-center | shiki |
|
slide-left | true |
Welcome to Slidev
Presentation slides for dogs
transition: fade-out
What is Slidev?
Slidev is a slides maker and presenter designed for developers, consist of the following features
- 📝 Text-based - focus on the content with Markdown, and then style them later
- 🎨 Themable - theme can be shared and used with npm packages
- 🧑💻 Developer Friendly - code highlighting, live coding with autocompletion
- 🤹 Interactive - embedding Vue components to enhance your expressions
- 🎥 Recording - built-in recording and camera view
- 📤 Portable - export into PDF, PNGs, or even a hostable SPA
- 🛠 Hackable - anything possible on a webpage
Read more about Why Slidev?
transition: slide-up level: 2
Navigation
Hover on the bottom-left corner to see the navigation's controls panel, learn more
Keyboard Shortcuts
right / space | next animation or slide |
left / shiftspace | previous animation or slide |
up | previous slide |
down | next slide |
Here!
layout: two-cols layoutClass: gap-16
Table of contents
You can use the Toc
component to generate a table of contents for your slides:
<Toc minDepth="1" maxDepth="1"></Toc>
The title will be inferred from your slide content, or you can override it with title
and level
in your frontmatter.
::right::
layout: image-right image: https://cover.sli.dev
Code
Use code snippets and get the highlighting directly, and even types hover1
// TwoSlash enables TypeScript hover information
// and errors in markdown code blocks
// More at https://shiki.style/packages/twoslash
import { computed, ref } from "vue";
const count = ref(0);
const doubled = computed(() => count.value * 2);
doubled.value = 2;
<<< @/snippets/external.ts#snippet
level: 2
Shiki Magic Move
Powered by shiki-magic-move, Slidev supports animations across multiple code snippets.
Add multiple code blocks and wrap them with ````md magic-move
(four backticks) to enable the magic move. For example:
```ts {*|2|*}
// step 1
const author = reactive({
name: "John Doe",
books: [
"Vue 2 - Advanced Guide",
"Vue 3 - Basic Guide",
"Vue 4 - The Mystery",
],
});
```
```ts {*|1-2|3-4|3-4,8}
// step 2
export default {
data() {
return {
author: {
name: "John Doe",
books: [
"Vue 2 - Advanced Guide",
"Vue 3 - Basic Guide",
"Vue 4 - The Mystery",
],
},
};
},
};
```
```ts
// step 3
export default {
data: () => ({
author: {
name: "John Doe",
books: [
"Vue 2 - Advanced Guide",
"Vue 3 - Basic Guide",
"Vue 4 - The Mystery",
],
},
}),
};
```
Non-code blocks are ignored.
```vue
<!-- step 4 -->
<script setup>
const author = {
name: "John Doe",
books: [
"Vue 2 - Advanced Guide",
"Vue 3 - Basic Guide",
"Vue 4 - The Mystery",
],
};
</script>
```
Components
You can use Vue components directly inside your slides.
We have provided a few built-in components like <Tweet/>
and <Youtube/>
that you can use directly. And adding your custom components is also super easy.
<Counter :count="10" />
Check out the guides for more.
<Tweet id="1390115482657726468" />
class: px-20
Themes
Slidev comes with powerful theming support. Themes can provide styles, layouts, components, or even configurations for tools. Switching between themes by just one edit in your frontmatter:
---
theme: default
---
---
theme: seriph
---
Read more about How to use a theme and check out the Awesome Themes Gallery.
Clicks Animations
You can add v-click
to elements to add a click animation.
This shows up when you click the slide:
<div v-click>This shows up when you click the slide.</div>
The v-mark
directive
also allows you to add
inline marks
, powered by Rough Notation:
<span v-mark.underline.orange>inline markers</span>
Motions
Motion animations are powered by @vueuse/motion, triggered by v-motion
directive.
<div
v-motion
:initial="{ x: -80 }"
:enter="{ x: 0 }"
:click-3="{ x: 80 }"
:leave="{ x: 1000 }"
>
Slidev
</div>
LaTeX
LaTeX is supported out-of-box powered by KaTeX.
Inline \sqrt{3x-1}+(1+x)^2
Block
{1|3|all}
\begin{array}{c}
\nabla \times \vec{\mathbf{B}} -\, \frac1c\, \frac{\partial\vec{\mathbf{E}}}{\partial t} &
= \frac{4\pi}{c}\vec{\mathbf{j}} \nabla \cdot \vec{\mathbf{E}} & = 4 \pi \rho \\
\nabla \times \vec{\mathbf{E}}\, +\, \frac1c\, \frac{\partial\vec{\mathbf{B}}}{\partial t} & = \vec{\mathbf{0}} \\
\nabla \cdot \vec{\mathbf{B}} & = 0
\end{array}
Diagrams
You can create diagrams / graphs from textual descriptions, directly in your Markdown.
sequenceDiagram
Alice->John: Hello John, how are you?
Note over Alice,John: A typical interaction
graph TD
B[Text] --> C{Decision}
C -->|One| D[Result 1]
C -->|Two| E[Result 2]
mindmap
root((mindmap))
Origins
Long history
::icon(fa fa-book)
Popularisation
British popular psychology author Tony Buzan
Research
On effectiveness<br/>and features
On Automatic creation
Uses
Creative techniques
Strategic planning
Argument mapping
Tools
Pen and paper
Mermaid
@startuml
package "Some Group" {
HTTP - [First Component]
[Another Component]
}
node "Other Groups" {
FTP - [Second Component]
[First Component] --> FTP
}
cloud {
[Example 1]
}
database "MySql" {
folder "This is my folder" {
[Folder 3]
}
frame "Foo" {
[Frame 4]
}
}
[Another Component] --> [Example 1]
[Example 1] --> [Folder 3]
[Folder 3] --> [Frame 4]
@enduml
foo: bar dragPos: square: 691,33,167,_,-16
Draggable Elements
Double-click on the draggable elements to edit their positions.
Directive Usage
<img v-drag="'square'" src="https://sli.dev/logo.png">
Component Usage
<v-drag text-3xl>
<carbon:arrow-up />
Use the `v-drag` component to have a draggable container!
</v-drag>
src: ./pages/multiple-entries.md hide: false
Monaco Editor
Slidev provides built-in Monaco Editor support.
Add {monaco}
to the code block to turn it into an editor:
import { ref } from "vue";
import { emptyArray } from "./external";
const arr = ref(emptyArray(10));
Use {monaco-run}
to create an editor that can execute the code directly in the slide:
import { version } from "vue";
import { emptyArray, sayHello } from "./external";
sayHello();
console.log(`vue ${version}`);
console.log(
emptyArray<number>(10).reduce(
(fib) => [...fib, fib.at(-1)! + fib.at(-2)!],
[1, 1]
)
);
layout: center class: text-center