Customize Markdown Elements
You can replace HTML elements of Markdown output with Svelte components.
img.svelte
(The file name must match the HTML tag name):
<script lang="ts">
export let src: string
</script>
<img {src} />
svelte.config.js
:
mdxPreprocess({
elements: ["img"],
})
+layout.svelte
:
<script module lang="ts">
import img from "$lib/markdown/img.svelte"
export const mdxElements = { img }
</script>
<script lang="ts">
import { setContext } from "svelte"
setContext("mdxElements", mdxElements)
</script>
Advanced
Find and replace HTML elements with custom components using CSS selectors.
svelte.config.js
:
mdxPreprocess({
elements: [
{
tag: "MyBlockCode",
selector: "pre code",
},
{
tag: "MyInlineCode",
selector: ":not(pre) code",
},
],
})
Related resources
- Learn more about the
elements
option.