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.