addClasses()
Fügt Elementen, die auf CSS-Selektoren passen, CSS-Klassen hinzu.
import { addClasses } from "@unifast/node";Signatur
function addClasses(rules: Record<string, string>): UnifastPluginParameter
rules
Ein Record<string, string>, bei dem die Schlüssel CSS-Selektoren und die Werte durch Leerzeichen getrennte Klassennamen sind, die passenden Elementen hinzugefügt werden sollen. Die Klassen werden mit allen bestehenden Klassen des Elements zusammengeführt.
Unterstützte Selektoren
Unterstützt wird eine breite Teilmenge von CSS Selectors Level 4, einschließlich:
Tag-Selektoren:
h1,p,tableKlassen-Selektoren:
.info,.alert.warningID-Selektoren:
#mainUniversal-Selektor:
*Attribut-Selektoren:
[data-type],[href^="https"],[href$=".pdf"],[href*="example"],[class~="bar"],[lang|="en"]Kombinatoren: Nachfahre (
), Kind (>), direkter Nachbar (+), allgemeiner Nachbar (~)Pseudo-Klassen:
:first-child,:last-child,:nth-child(),:not(),:emptyKommagetrennte Selektoren:
h1, h2, h3Zusammengesetzte Selektoren:
div.alert#main[data-type="warning"]
Verwendung
import { compile, addClasses } from "@unifast/node";
const md = `
# Hello World
Some paragraph text.
| Name | Value |
|------|-------|
| A | 1 |
`;
const result = compile(md, {
plugins: [
addClasses({
h1: "text-3xl font-bold",
p: "leading-relaxed",
table: "border-collapse w-full",
}),
],
});
// <h1 class="text-3xl font-bold">Hello World</h1>
// <p class="leading-relaxed">Some paragraph text.</p>
// <table class="border-collapse w-full">...</table>Beispiele
Kommagetrennte Selektoren
Wenden Sie dieselben Klassen auf mehrere Elementtypen an:
import { compile, addClasses } from "@unifast/node";
const result = compile(md, {
plugins: [
addClasses({
"h1, h2, h3": "font-bold tracking-tight",
}),
],
});Komplexe Selektoren
Verwenden Sie Kombinatoren und Pseudo-Klassen für präzises Targeting:
import { compile, addClasses } from "@unifast/node";
const result = compile(md, {
plugins: [
addClasses({
"pre > code": "block overflow-x-auto",
"ul > li:first-child": "mt-0",
"ul > li:last-child": "mb-0",
"a[href^=\"https\"]": "external-link",
"div:not(.alert)": "default-container",
}),
],
});Tailwind-CSS-Utility-Klassen
Ein gängiges Muster ist die Verwendung von addClasses, um Tailwind-Utilities auf aus Markdown generiertes HTML anzuwenden:
import { compile, addClasses } from "@unifast/node";
const result = compile(md, {
plugins: [
addClasses({
h1: "text-4xl font-extrabold text-gray-900 mb-8",
h2: "text-2xl font-bold text-gray-800 mt-12 mb-4",
h3: "text-xl font-semibold text-gray-700 mt-8 mb-3",
p: "text-base leading-7 text-gray-600 mb-4",
a: "text-blue-600 underline hover:text-blue-800",
blockquote: "border-l-4 border-gray-300 pl-4 italic text-gray-500",
table: "min-w-full divide-y divide-gray-200",
"thead th": "px-4 py-2 text-left text-sm font-semibold text-gray-900",
"tbody td": "px-4 py-2 text-sm text-gray-700",
"tbody tr:nth-child(2n)": "bg-gray-50",
img: "rounded-lg shadow-md",
pre: "rounded-lg overflow-hidden",
"pre > code": "block p-4 text-sm",
}),
],
});Attribut-Selektoren
Zielen Sie Elemente basierend auf ihren Attributen an:
import { compile, addClasses } from "@unifast/node";
const result = compile(md, {
plugins: [
addClasses({
"[href$=\".pdf\"]": "pdf-link",
"[href^=\"https\"]": "external",
"[data-type]": "has-type",
}),
],
});