Style rendered Markdown with Tailwind Typography
Ta treść nie jest jeszcze dostępna w Twoim języku.
You can use Tailwind’s Typography plugin to style rendered Markdown from sources such as Astro’s content collections.
This recipe will teach you how to create a reusable Astro component to style your Markdown content using Tailwind’s utility classes.
Prerequisites
Section titled PrerequisitesAn Astro project that:
- has Astro’s Tailwind integration installed.
- uses Astro’s content collections.
Setting Up @tailwindcss/typography
Section titled Setting Up @tailwindcss/typographyFirst, install @tailwindcss/typography using your preferred package manager.
npm install -D @tailwindcss/typographypnpm add -D @tailwindcss/typographyyarn add --dev @tailwindcss/typographyThen, add the package as a plugin in your Tailwind configuration file.
/** @type {import('tailwindcss').Config} */export default {  theme: {    // ...  },  plugins: [   require('@tailwindcss/typography'),    // ...  ],}Recipe
Section titled Recipe- 
Create a <Prose />component to provide a wrapping<div>with a<slot />for your rendered Markdown. Add the style classprosealongside any desired Tailwind element modifiers in the parent element.src/components/Prose.astro ------<divclass="prose dark:prose-invertprose-h1:font-bold prose-h1:text-xlprose-a:text-blue-600 prose-p:text-justify prose-img:rounded-xlprose-headings:underline"><slot /></div>The @tailwindcss/typographyplugin uses element modifiers to style child components of a container with theproseclass.These modifiers follow the following general syntax: prose-[element]:class-to-applyFor example, prose-h1:font-boldgives all<h1>tags thefont-boldTailwind class.
- 
Query your collection entry on the page you want to render your Markdown. Pass the <Content />component fromawait entry.render()to<Prose />as a child to wrap your Markdown content in Tailwind styles.src/pages/index.astro ---import Prose from '../components/Prose.astro';import Layout from '../layouts/Layout.astro';import { getEntry } from 'astro:content';const entry = await getEntry('collection', 'entry');const { Content } = await entry.render();---<Layout><Prose><Content /></Prose></Layout>