Figma to Pure CSS Single-File Skill (Zero-Script & All-in-One)
Diese Fähigkeit leitet den Agenten an, ein Figma-Design in eine einzige, unabhängige HTML-Datei (Single-File) umzuwandeln, die ausschließlich ein <style>-Tag und Bilder/SVGs verwendet und absolut KEINE <script>-Tags enthält. Optimiert für die browserübergreifende Darstellung und A4-Druck / PDF-Export im Goldenen Schnitt ohne Randverschiebung.
1. Zweck & Anwendungsbereich
Nutze diese Fähigkeit, wenn:
- Der Nutzer ein HTML/CSS ohne Skripte (No-Script / Zero-JS) anfordert.
- Ein einziges, in sich geschlossenes HTML-File (All-in-one HTML) erstellt werden soll.
- Die Vorlage verwendet wird für: Dokumentendruck / A4-Verträge (Print to PDF), Versicherungs-/Schadensformulare, HTML-E-Mail-Vorlagen, eingebettete Webviews in mobilen Apps mit JavaScript-Sperre oder CMS/Sandbox mit hohen Sicherheitsanforderungen, die Skripte verbieten.
2. Zwingende Grundsätze (Hard Constraints)
-
Absolut 0
<script>-Tags (Strict Zero-Script):- VERBOTEN:
<script src="https://cdn.tailwindcss.com"></script>oder irgendein CDN-Skript. - VERBOTEN: Inline-
<script>-Tag zur Tailwind-Konfiguration oder zur JavaScript-Ausführung. - VERBOTEN: Inline-JS-Event-Handler wie
onclick="...",onload="...".
- VERBOTEN:
-
Das gesamte CSS befindet sich vollständig in einem internen
<style>-Tag:- Der gesamte CSS-Code wird im
<style>-Tag innerhalb des<head>der.html-Datei platziert. - Kein externer CSS-Import (außer Google Fonts, wenn der Nutzer Figma‑Standard-Schriften benötigt).
- Der gesamte CSS-Code wird im
-
Bild- & Vektorverwaltung:
- Bitmap-Bilder (PNG/JPG/WebP): Herunterladen in das interne Verzeichnis
assets/<slug>/und einbinden via<img src="assets/<slug>/bildname.png" alt="..." />. - Vektor-Icons / Logos: Bevorzugt direkt als Inline-
<svg>oder<img src="assets/<slug>/icon.svg">.
- Bitmap-Bilder (PNG/JPG/WebP): Herunterladen in das interne Verzeichnis
-
Keine absoluten Canvas-Koordinaten:
- Verboten:
position: absolute; top: ...px; left: ...px;für das gesamte Layout-Gerüst. - Zwingend: CSS Grid und Flexbox für einen natürlichen Layout-Aufbau.
- Verboten:
-
CSS-Variablen & Design Tokens:
- Alle aus Figma extrahierten Farben, Größen und Schriften im
:root-Selektor deklarieren::root { --color-primary: #0E4E96; --color-secondary: #F58220; --color-text-main: #1E293B; --color-border: #E2E8F0; --font-main: 'Barlow', -apple-system, BlinkMacSystemFont, sans-serif; }
- Alle aus Figma extrahierten Farben, Größen und Schriften im
-
A4-DRUCK- & PDF-EXPORT-STANDARD 100% (ANTI-DRIFT A4 PRINT RULES):
- Grundsätzliche Einheit von Figma für A4-Format:
- Ein A4-Artboard in Figma hat immer die standardmäßigen Druckmaße: $595,28 \times 841,89$ PostScript-Punkte (
pt), exakt $210\text{mm} \times 297\text{mm}$ (ISO 216). - VERBOTEN: Direkte Übertragung der Figma-Maße in
px(z.B.width: 595.28px). Bei 96 DPI des Webs entsprechen $595,28\text{px}$ nur $157,5\text{mm}$ (nur $75%$ einer A4-Seite), was in der Druckvorschau zu einer Schrumpfung und einem weißen Rand von $52,5\text{mm}$ rechts führt. - ZWINGEND: Einheit
pt(odermm) für alle Größenangaben, Schriftgrößen, Padding, Margin. A4-Rahmen aufwidth: 595.28pt(oder210mm) undheight: 841.89pt(oder297mm) setzen.
- Ein A4-Artboard in Figma hat immer die standardmäßigen Druckmaße: $595,28 \times 841,89$ PostScript-Punkte (
- Footer & Header Bar 100% randlos:
- Footer- oder Header-Farbbalken zwingend mit
width: 100%;in Kombination mitposition: absolute; bottom: 0; left: 0; right: 0;setzen, stattwidth: 595.28px/ptfest zu definieren – so wird der Balken immer von linkem bis rechtem Papierrand vollflächig abgedeckt.
- Footer- oder Header-Farbbalken zwingend mit
- Hintergrundfarben drucken aktivieren:
-webkit-print-color-adjust: exact !important; print-color-adjust: exact !important;für*, *::before, *::afterund in@media printdeklarieren.
@page- und@media print-Block zwingend:@page { size: A4 portrait; margin: 0; } @media print { *, *::before, *::after { -webkit-print-color-adjust: exact !important; print-color-adjust: exact !important; } html, body { width: 210mm !important; height: 297mm !important; margin: 0 !important; padding: 0 !important; background: #FFFFFF !important; overflow: hidden !important; } .a4-page { width: 210mm !important; height: 297mm !important; min-width: 210mm !important; min-height: 297mm !important; max-width: 210mm !important; max-height: 297mm !important; margin: 0 !important; padding: 0 !important; box-shadow: none !important; page-break-after: avoid !important; page-break-inside: avoid !important; } }
- Grundsätzliche Einheit von Figma für A4-Format:
3. Beispielstruktur einer Single-File-HTML-Datei (Pure CSS A4 Print Ready)
<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Seitentitel / Formular</title>
<!-- Optional: Google Fonts, falls Figma spezielle Schriften benötigt -->
<link rel="preconnect" href="https://fonts.googleapis.com" />
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
<link href="https://fonts.googleapis.com/css2?family=Barlow:ital,wght@0,400;0,600;0,700;0,800;1,400;1,600;1,700&display=swap" rel="stylesheet" />
<style>
/* 1. GRUNDLEGENDES RESET */
*, *::before, *::after {
box-sizing: border-box;
margin: 0;
padding: 0;
-webkit-print-color-adjust: exact !important;
print-color-adjust: exact !important;
}
/* 2. DESIGN TOKENS */
:root {
--color-primary: #0E4E96;
--color-accent: #F58220;
--color-text: #111827;
--color-text-muted: #6B7280;
--color-bg: #FFFFFF;
--color-border: #231F20;
--font-family: 'Barlow', -apple-system, BlinkMacSystemFont, sans-serif;
}
/* 3. BASIS-BODY: Bildschirmdarstellung */
body {
font-family: var(--font-family);
color: var(--color-text);
background-color: #E2E8F0;
margin: 0;
padding: 24px 0;
display: flex;
justify-content: center;
align-items: flex-start;
-webkit-font-smoothing: antialiased;
}
/* 4. A4-RAHMEN (595.28pt x 841.89pt = 210mm x 297mm) */
.a4-page {
position: relative;
width: 595.28pt;
height: 841.89pt;
min-width: 595.28pt;
min-height: 841.89pt;
background-color: var(--color-bg);
box-shadow: 0 4px 20px rgba(0, 0, 0, 0.15);
box-sizing: border-box;
overflow: hidden;
margin: 0 auto;
}
.page-content {
position: relative;
z-index: 2;
width: 532.96pt;
margin: 0 auto;
padding-top: 21.97pt;
}
/* Fußleiste randlos 100% */
.footer-bar {
position: absolute;
bottom: 0;
left: 0;
width: 100%;
height: 19.63pt;
background-color: var(--color-primary);
display: flex;
justify-content: space-between;
align-items: center;
padding: 0 28.94pt;
box-sizing: border-box;
z-index: 10;
}
/* 5. A4-DRUCK- & PDF-KONFIGURATION GEGEN VERSCHIEBUNG */
@page {
size: A4 portrait;
margin: 0;
}
@media print {
html, body {
width: 210mm !important;
height: 297mm !important;
margin: 0 !important;
padding: 0 !important;
background: #FFFFFF !important;
overflow: hidden !important;
}
.a4-page {
width: 210mm !important;
height: 297mm !important;
min-width: 210mm !important;
min-height: 297mm !important;
max-width: 210mm !important;
max-height: 297mm !important;
margin: 0 !important;
padding: 0 !important;
box-shadow: none !important;
page-break-after: avoid !important;
page-break-inside: avoid !important;
}
}
</style>
</head>
<body>
<!-- Semantisches HTML5: Keinerlei <script>-Tags -->
<main class="a4-page" id="print-page">
<div class="page-content">
<!-- Aus Figma konvertierter Layout-Inhalt -->
</div>
<footer class="footer-bar">
<!-- Fußleiste randlos 100% -->
</footer>
</main>
</body>
</html>
4. 5‑Schritt-Ausführungsablauf (Pure CSS Single-File)
- Schritt 1 (Figma-Daten auslesen):
get_figma_dataaufrufen, um Layer-Struktur, Auto-Layout, Schriftarten, Farben und Maße zu extrahieren. A4-Format erkennen ($595,28\text{pt} \times 841,89\text{pt}$). - Schritt 2 (Ressourcen herunterladen): PNG/JPG-Bilder und SVGs in
assets/<slug>/speichern. - Schritt 3 (HTML + Pure
<style>aufbauen):- Das gesamte CSS im
<style>-Tag der HTML-Datei schreiben. - Einheit
pt(oder umgerechnetmm) verwenden,width: 100%für randlose Fußleiste. - Sicherstellen, dass zu 100% KEIN
<script>-Tag eingefügt wird.
- Das gesamte CSS im
- Schritt 4 (Browser starten & Druckprüfung):
- HTML-Datei über lokalen Server oder File-URL öffnen.
- Bildschirmansicht prüfen.
- Zwingend Druckvorschau prüfen: Mit Playwright
emulateMedia({ media: 'print' })oder PDF-Export viapage.pdf({ format: 'A4', margin: { top: 0, bottom: 0, left: 0, right: 0 }, printBackground: true }), um zu verifizieren: exakt 1 Seite (1/1), keine Randverschiebung, Fußleiste randlos 100%.
- Schritt 5 (6‑Punkte-Abweichungsprüfung): 1:1-Übereinstimmung prüfen, CSS im
<style>-Tag anpassen, bis 100% Übereinstimmung erreicht ist.
