5. Gestaltung mit CSS
Dieser Abschnitt erklärt schrittweise, wie Sie Dokumente in adoc Studio mit CSS gestalten. Sie lernen, eigene Stylesheets zu erstellen, bestehende anzupassen und dabei die spezifischen Anforderungen von adoc Studio zu berücksichtigen.
Nach der Lektüre können Sie eigenständig neue Stylesheets anlegen oder vorhandene anpassen. Die Anleitung deckt dabei alle wichtigen Bereiche ab: von der Grundstruktur über Dark-Mode-Support bis hin zu PDF-spezifischen Anpassungen.
5.1. Voraussetzungen
-
adoc Studio
-
Texteditor oder IDE mit CSS-Support
-
Browser mit Entwicklertools für Tests
| Bitte haben Sie Verständnis, dass wir in diesem Dokument keinen CSS-Kurs anbieten können. Sollten Sie sich mit CSS bereits auskennen, ist die Recherche im Internet für Sie sicher kein Problem. Sind Sie nicht technisch bewandert, holen Sie sich gerne Hilfe von außen. Wir bauen zur Zeit ein Partnerprogramm, an das Sie sich bei Interesse gerne wenden können. |
5.2. Grundlagen
Sie finden alle Stile unter . Alternativ gelangen sie mit ⌘+, in die Einstellungen.
Stil-Kategorien in adoc Studio
Wir unterscheiden zwischen mitgelieferten und eigenen Stilen.
- Mitgelieferte Stile (Factory Styles)
-
Schreibgeschützte Standarddesigns, die in adoc Studio enthalten sind.
- Eigene Stile
-
Vom Nutzer duplizierte, neu angelegte oder extern eingebundene Stile. Eigene Stile erscheinen immer oberhalb der FactoryStyles in einer eigenen Gruppe.

Rechtsklick auf einen Stil – und schon ist er als Standard gesetzt. Neue Projekte starten automatisch mit diesem Stil.
Mitgelieferte Stile ansehen
Mit Rechtsklick auf adoc Studio in Ihrem Programme-Ordner lassen Sie sich den Paketinhalt der Software anzeigen.
Die mitgelieferten Stile finden Sie unter . Lassen Sie sich hier ebenfalls den Paketinhalt anzeigen, um die info.json und die style.css Dateien des ausgewählten Stils zu sehen.
Eigene Stile ansehen
Es gibt zwei Wege, wie Sie Ihre eigenen Stile ansehen können:
- Im Finder
-
Eigene Stile werden unter gespeichert.
- In adoc Studio
-
Klicken Sie auf den Pfeil neben dem -Symbol in der Symbolleiste. Wählen Sie Ihren Stil im Popup aus.
Mit Rechtsklick öffnen Sie ihn im Finder oder bearbeiten ihn im Text-Editor Ihrer Wahl.
Nun können Sie bei der gewünschten .adocstyle wieder den Paketinhalt anzeigen lassen (siehe oben für die Erklärung)
Verwalten Sie Ihre Dateien in einem Git Repository, können Sie auch Ihre Produktstile dort versionieren.ln -s path/to/your/repository ~/Library/Containers/app.adoc-studio.main/Data/Library/Application Support erzeugt einen symbolischen Link in das erforderliche Verzeichnis.Wichtig ist dann auch noch, dass in adoc Studio in den Einstellungen der Zugriff auf das Verzeichnis gestattet ist. |
Dateistruktur eines Stil-Pakets
Die Stildatei ist ein sogenanntes Bundle – also ein Verzeichnis, das als Datei dargestellt wird. Das ist im macOS ein üblichen Vorgehen, um den Umgang mit den gesammelten Dateien zu vereinfachen.
Klicken Sie im
Finder auf Paketinhalt anzeigen, öffnet sich die Datei wie ein Ordner. Im Stammverzeichnis liegt die info.json; daneben ein Ordner resources, der sämtliche Assets bündelt.
Stilename.adocstyle/
info.json
resources/
style.css
| Datei | Inhalt |
|---|---|
|
|
Metadaten (ID, Anzeigename, Option |
|
|
Alle CSS-Regeln. Nutzt das Variablenschema |
Die Datei info.json ist eine Beschreibungsdatei in der Sie das Grundverhalten Ihres Stils festlegen.
info.json mit Erklärung{
"id": "app.adoc-studio.style.beispiel", // eindeutige interne Kennung
"name": "Beispiel", // Anzeigename in adoc Studio
"basedOn": "app.adoc-studio.style.base", // optional: ID des Basisstils
"isHidden": false, // true blendet den Stil im Menü aus
}
Nachtrag zur ID: Über die ID spricht adoc Studio den Stil an. Haben Sie eine Stildatei von einem anderen Stil dupliziert, finden Sie hier eine UUID, die Sie nicht bearbeiten müssen. Sie können aber auch einen eigenen Identifier wie im Beispiel nutzen: "id": "app.adoc-studio.style.beispiel" |
Darüber hinaus kann ein Stil beliebige Inhalte, wie Fonts oder Bilder enthalten, die im Stil verwendet werden.
Ein komplexes Beispiel:
Stil-name.adocstyle/
info.json
fonts/
font1.ttf
font2.ttf
images/
logo.jpg
icon.png
resources/
style.css
In der CSS-Datei rufen Sie einzelne Bestandteile mit dem Bundle als Wurzelverzeichnis. Der Pfad zu einer Font-Datei lautet also fonts/font1.ttf.
5.3. Eigene Stile erstellen (3 Wege)
Basisstil duplizieren und anpassen (empfohlen für CSS Einsteiger)
-
Öffnen Sie Einstellungen oder klicken Sie in den Vorschau-Einstellungen auf menu:…[Stil bearbeiten].
-
Wählen Sie einen Basisstil und klicken Sie Duplizieren.
-
Öffnen Sie den neuen Stil per Im Finder anzeigen → Paketinhalt anzeigen.
-
Bearbeiten Sie
style.cssin Ihrem Editor.
:root {
--ads-headline-color: #cc0000;
--ads-a-color: #0066cc;
}
Externe CSS-Datei per Dokumentattribut
-
Legen Sie im Projektordner custom-style.css an.
-
Entfernen Sie ggf. automatisch gesetzte Titelzeilen.
-
Binden Sie die Datei im Dokument ein:
custom-style.css
adoc Studio verwendet dann ausschließlich dieses Stylesheet.
Stil von Grund auf neu (für CSS-Profis)
-
Kopieren Sie einen leeren Custom Style im Finder.
-
Löschen Sie den Inhalt von
style.cssundinfo.json. -
Definieren Sie alle benötigten Variablen selbst:
:root {
--ads-body-font: "Times New Roman", serif;
--ads-headline-font: "Arial", sans-serif;
--ads-color: #000;
--ads-background-color: #fff;
--ads-a-color: #0066cc;
--ads-a-hover-color: #0052a3;
--ads-single-border-color: #ccc;
}
5.4. Variable-Konzepte
Damit es eine gemeinsame Grundlage für die Formatierung gibt, haben wir den Standard-Stil von Asciidoctor als Basis genommen und unsere mitgelieferten Stile davon abgeleitet.
So konnten wir alle Fonts und Farben in einer langen Liste von Variablen ablegen. Da das meistens die ersten Änderungen auf der Wunschliste sind, zeigen wir Ihnen in diesem Dokument diese Änderungen.
adoc Studio verwendet ein strukturiertes System von CSS-Variablen mit dem Präfix --ads-.
Globale Farb- und Typografie-Variablen
Die wichtigsten Variablen-Kategorien:
:root {
/* Typografie */
--ads-body-font: serif;
--ads-headline-font: sans-serif;
--ads-monospaced-font: monospace;
--ads-toc-font: sans-serif;
/* Grundfarben */
--ads-color: #101010;
--ads-background-color: #ffffff;
--ads-headline-color: #ba3925;
/* Links */
--ads-a-color: #2156a5;
--ads-a-hover-color: #1d4b8f;
/* Rahmen und Grenzen */
--ads-single-border-color: #dddddf;
--ads-border-color: rgb(0 0 0 / 0.6);
}
Dark-Mode-Overrides
Definieren Sie separate Variablen für den Dark Mode:
:root {
--ads-color: #101010;
--ads-background-color: #ffffff;
--ads-color-dark: #f1f1f1;
--ads-background-color-dark: #121212;
}
@media (prefers-color-scheme: dark) {
body {
color: var(--ads-color-dark);
background-color: var(--ads-background-color-dark);
}
h1, h2, h3, h4, h5, h6 {
color: var(--ads-headline-color-dark);
}
}
| Eine vollständige Liste der Variablen in adoc Studio finden Sie in hier. |
5.5. Element-Klassen
Typografie
Body und Grundtext
| Klasse | Zweck | Typische Regeln |
|---|---|---|
|
|
Absätze |
|
|
|
Präambel |
Größere Schrift, |
|
|
Erster Absatz |
Spezielle Formatierung für Einleitung |
/* Grundtext-Formatierung */
.paragraph > p {
font-size: 1em;
line-height: 1.6;
margin-bottom: 1.25em;
color: var(--ads-color);
}
.paragraph.lead > p {
font-size: 1.25em;
font-weight: 500;
line-height: 1.4;
}
Beispiel in AsciiDoc:
Dies ist ein Einleitungstext mit größerer Schrift.
Dies ist ein normaler Absatz mit Standardformatierung.
Überschriften
| Klasse | Zweck | Typische Regeln |
|---|---|---|
|
|
Überschriften |
|
|
|
Dokumenttitel |
Größere Schrift, Zentrierung |
|
|
Untertitel |
Kleinere Schrift als Haupttitel |
h1, h2, h3, h4, h5, h6 {
font-family: var(--ads-headline-font);
color: var(--ads-headline-color);
font-weight: 300;
line-height: 1.2;
}
#header > h1:first-child {
font-size: 2.5em;
text-align: center;
margin-bottom: 1em;
}
h2 {
font-size: 1.875em;
margin-top: 2em;
margin-bottom: 1em;
}
Inline-Formatierung
| Klasse | Zweck | Typische Regeln |
|---|---|---|
|
|
Fettschrift |
|
|
|
Kursiv |
|
|
|
Markierung |
|
|
|
Inline-Code |
|
strong {
font-weight: bold;
color: var(--ads-color);
}
mark {
background-color: var(--ads-mark-background-color);
padding: 0.1em 0.3em;
border-radius: 0.2em;
}
code {
font-family: var(--ads-monospaced-font);
background-color: var(--ads-pre-background-color);
padding: 0.1em 0.5em;
border-radius: 4px;
}
Tabellen
| Klasse | Zweck | Typische Regeln |
|---|---|---|
|
|
Grundtabelle |
|
|
|
Tabellenkopf |
|
|
|
Gestreifte Zeilen |
|
|
|
Vollständiger Rahmen |
|
|
|
Vollständiges Raster |
Alle Zellenränder |
table.tableblock {
border-collapse: collapse;
background-color: var(--ads-table-background-color);
width: 100%;
margin-bottom: 1.25em;
}
table thead th {
background-color: var(--ads-table-head-background-color);
font-weight: bold;
padding: 0.5em 0.625em;
border: 1px solid var(--ads-single-border-color);
}
table.stripes-all > * > tr:nth-of-type(odd) {
background-color: var(--ads-table-stripes-background-color);
}
Beispiel in AsciiDoc:
| Name | Beschreibung | Status |
|---|---|---|
|
Feature A |
Wichtige Funktionalität |
Aktiv |
|
Feature B |
Zusätzliche Option |
Beta |
Bilder und Imageblocks
| Klasse | Zweck | Typische Regeln |
|---|---|---|
|
|
Bildcontainer |
|
|
|
Bildunterschrift |
|
|
|
Linksbündiges Bild |
|
|
|
Rechtsbündiges Bild |
|
|
|
Bild-Element |
|
.imageblock {
margin: 1.25em 0;
text-align: center;
}
.imageblock > .title {
font-style: italic;
font-size: 0.9em;
margin-top: 0.5em;
color: var(--ads-details-color);
}
.imageblock.left {
float: left;
margin: 0.25em 1.25em 1.25em 0;
text-align: left;
}
img {
max-width: 100%;
height: auto;
border-radius: 4px;
}
Beispiel in AsciiDoc:
.Beispielbild mit Beschriftung
image::beispiel.png[alt="Beispiel", width=400]
.Linksbündiges Bild
image::logo.png[alt="Logo", width=200]
Listen und Checklisten
| Klasse | Zweck | Typische Regeln |
|---|---|---|
|
|
Ungeordnete Liste |
|
|
|
Geordnete Liste |
|
|
|
Checkliste |
|
|
|
Definitionsliste |
Spezielle Formatierung für Begriff/Definition |
|
|
Horizontale Definitionsliste |
Tabellenähnliche Darstellung |
.ulist ul {
list-style-type: disc;
margin-left: 1.5em;
line-height: 1.6;
}
.ulist ul li {
margin-bottom: 0.5em;
}
.checklist ul {
list-style-type: none;
margin-left: 0;
}
.checklist ul li::before {
content: "☐ ";
margin-right: 0.5em;
}
.checklist ul li.checked::before {
content: "☑ ";
}
dl dt {
font-weight: bold;
margin-top: 1em;
color: var(--ads-headline-color);
}
dl dd {
margin-left: 1.5em;
margin-bottom: 0.5em;
}
Beispiel in AsciiDoc:
-
Erster Punkt
-
Zweiter Punkt
-
Unterpunkt
-
Weiterer Unterpunkt
-
-
Aufgabe 1
-
Aufgabe 2 (erledigt)
-
Aufgabe 3
- Begriff
-
Definition des Begriffs
- Anderer Begriff
-
Weitere Definition
Code und Syntax-Highlighting
| Klasse | Zweck | Typische Regeln |
|---|---|---|
|
|
Code-Block-Container |
|
|
|
Code-Inhalt |
|
|
|
Schlüsselwörter |
|
|
|
Zeichenketten |
|
|
|
Kommentare |
|
.listingblock {
margin-bottom: 1.25em;
}
.listingblock > .content > pre {
background-color: var(--ads-listingblock-background-color);
padding: 1em;
border-radius: 4px;
overflow-x: auto;
font-family: var(--ads-monospaced-font);
font-size: 0.9em;
line-height: 1.4;
}
/* Syntax-Highlighting */
.code-keyword {
color: var(--ads-literal-color);
font-weight: bold;
}
.code-string {
color: var(--ads-attribute-color);
}
.code-comment {
color: var(--ads-comment-color);
font-style: italic;
}
.code-function {
color: var(--ads-tag-color);
}
Beispiel in AsciiDoc:
function beispielFunktion() {
// Dies ist ein Kommentar
const variable = "Zeichenkette";
return variable;
}
.beispiel-klasse {
color: red;
font-size: 1.2em;
}
Hinweise (Admonitions)
| Klasse | Zweck | Typische Regeln |
|---|---|---|
|
|
Container für Hinweise |
|
|
|
Hinweis (blau) |
Blaue Farben |
|
|
Tipp (grün) |
Grüne Farben |
|
|
Warnung (orange) |
Orange Farben |
|
|
Vorsicht (gelb) |
Gelbe Farben |
|
|
Wichtig (rot) |
Rote Farben |
|
|
Icon-Bereich |
Icon-Formatierung |
|
|
Textinhalt |
Textformatierung |
.admonitionblock {
margin: 1.25em 0;
border-left: 5px solid;
background-color: var(--ads-admonitionblock-background-color);
}
.admonitionblock.note {
border-color: var(--ads-note-border-color);
background-color: var(--ads-note-background-color);
}
.admonitionblock.tip {
border-color: var(--ads-tip-border-color);
background-color: var(--ads-tip-background-color);
}
.admonitionblock.warning {
border-color: var(--ads-warning-border-color);
background-color: var(--ads-warning-background-color);
}
.admonitionblock td.icon {
width: 80px;
text-align: center;
padding: 1em;
}
.admonitionblock td.content {
padding: 1em;
word-wrap: anywhere;
}
/* Icons mit Font Awesome */
.admonitionblock td.icon .icon-note::before {
content: "\f05a";
color: var(--ads-note-color);
font-size: 2em;
}
.admonitionblock td.icon .icon-tip::before {
content: "\f0eb";
color: var(--ads-tip-color);
font-size: 2em;
}
Beispiel in AsciiDoc:
| Dies ist ein wichtiger Hinweis für den Leser. |
| Hier steht ein nützlicher Tipp. |
| Achtung, hier ist Vorsicht geboten! |
| Seien Sie besonders vorsichtig. |
| Dies ist sehr wichtig zu beachten. |
Navigation und Inhaltsverzeichnis
| Klasse | Zweck | Typische Regeln |
|---|---|---|
|
|
TOC-Container |
|
|
|
TOC-Überschrift |
|
|
|
TOC-Listen |
|
|
|
TOC-Einträge |
|
|
|
TOC-Links |
|
.tocbase {
background-color: var(--ads-toc-background-color);
border: 1px solid var(--ads-single-border-color);
padding: 1.25em;
margin-bottom: 1.25em;
border-radius: 4px;
}
#toctitle {
font-size: 1.375em;
font-weight: 500;
color: var(--ads-headline-color);
margin-bottom: 0.5em;
}
.tocbase ul {
list-style: none;
margin: 0;
padding-left: 0;
}
.tocbase li {
line-height: 1.4;
margin-top: 0.5em;
}
.tocbase a {
text-decoration: none;
color: var(--ads-a-color);
}
.tocbase a:hover {
color: var(--ads-a-hover-color);
text-decoration: underline;
}
/* Einrückung für Unterebenen */
.tocbase ul ul {
padding-left: 1em;
margin-top: 0.25em;
}
Eigene Klassen verwenden
Sie können eigene Klassen definieren und direkt im Text aktivieren. Setzen Sie dazu den Klassennamen in eckige Klammern ([.custom-class]) vor das entsprechende Element.
Beispiele in AsciiDoc:
Dieser Text ist rot.
Dieser Text ist horizontal zentriert.
Farben
/* Textfarben */
.red { color: var(--ads-red-color); }
.blue { color: var(--ads-blue-color); }
.green { color: var(--ads-green-color); }
/* Hintergrundfarben */
.red-background { background-color: var(--ads-red-background-color); }
.blue-background { background-color: var(--ads-blue-background-color); }
.green-background { background-color: var(--ads-green-background-color); }
@media (prefers-color-scheme: dark) {
.red { color: var(--ads-red-color-dark); }
.blue { color: var(--ads-blue-color-dark); }
.green { color: var(--ads-green-color-dark); }
}
Float und Zentrierung
.left { float: left ; }
.right { float: right ; }
.text-left { text-align: left ; }
.text-right { text-align: right ; }
.text-center { text-align: center ; }
.text-justify { text-align: justify ; }
.hide { display: none; }
.clearfix::after {
content: "";
display: table;
clear: both;
}
5.6. PDF-Ausgabe mit Vivliostyle
Zweck und Arbeitsweise
Vivliostyle ist eine JavaScript-Engine für CSS Paged Media. adoc Studio nutzt sie, um das HTML‐Preview in ein druckfertiges PDF zu paginieren. Alle PDF-spezifischen Regeln werden deshalb in einem eigenen Block gekapselt:
@media vivliostyle { … }
Innerhalb dieses Blocks gelten die gleichen CSS-Selektoren wie im Browser, ergänzt um paged-media-Eigenschaften wie @page, string-set oder counter-increment.
Globale Steuerung
| Element | Aufgabe | Typischer Wert |
|---|---|---|
|
|
Überträgt die eingestellte Seitengröße an den Print-Dialog. |
|
|
|
Standard-Seitenrand. |
|
|
|
Aktiviert gezählte Seitentypen (siehe unten). |
|
adoc Studio schreibt die Attribute data-media und data-pagenums automatisch ins <body>‐Element. Regeln können so gezielt greifen, ohne zusätzliche Klassen. |
Benannte Seitentypen
Für jeden Abschnitt des Dokuments existiert ein vordefinierter Seitentyp. Er lässt sich in @page-Regeln ansprechen und einzeln gestalten.
| Seitentyp | Wird verwendet für … | Zählt? |
|---|---|---|
|
|
Vorderumschlag (Attr. |
nur *-counted |
|
|
Titelseite (Attr. |
nur *-counted |
|
|
Inhaltsverzeichnis (wenn nicht Teil der Präambel) |
nur *-counted |
|
|
Präambel inkl. TOC (wenn |
nur *-counted |
|
|
Hauptinhalt |
nur *-counted |
|
|
Rückumschlag (Attr. |
nein |
Mehr Details zu den Seitentypen finden Sie als Kommentare im Basis-Stil Base.adocstyle. |
Kopf- und Fußzeilen
Dokumenttitel und Kapitelname werden per CSS-String zwischengespeichert:
h1 { string-set: doctitle content(text); }
h2 { string-set: section1-title content(text); }
Die Strings lassen sich in beliebigen @page-Regionen ausgeben:
@page body:left {
@top-right { content: string(doctitle); }
@bottom-right{ content: string(section1-title, first); }
}
Seitenzähler
Ein gemeinsamer Zähler counted-page läuft über alle *-counted-Typen:
@page body-counted { counter-increment: counted-page; }
@page body-counted:right {
@bottom-right { content: counter(counted-page); }
Damit lassen sich numerische Kolumnentitel oder ein automatisch gefülltes TOC erzeugen:
.tocbase a::after {
content: leader('.') target-counter(attr(href), counted-page);
Hintergrundbilder und Farbflächen
| Variable | Einsatzgebiet | Fallback |
|---|---|---|
|
|
Vorderumschlag |
keiner |
|
|
Rückumschlag |
keiner |
|
|
Alle rechten Seiten |
|
|
|
Alle linken Seiten |
|
|
|
Titelseite |
Recto-Hintergrund |
Vergeben Sie nur die Variablen, die tatsächlich benötigt sind. Nicht gesetzte Werte erben automatisch den Fallback.
Fußnoten
Vivliostyle unterstützt echte paginierte Fußnoten:
span.footnote { float: footnote; counter-increment: footnote; }
span.footnote::footnote-call { content: counter(footnote); }
span.footnote::footnote-marker { content: counter(footnote) "."; }
Referenzen auf bereits vorhandene Fußnoten erhalten den Zähler der Zielnote:
span.footnoteref::before {
content: target-counter(attr(data-target), footnote);
}
Best Practices
-
Definieren Sie alle PDF-Regeln nur in
@media vivliostyle, nie in@media print. -
Arbeiten Sie mit CSS-Variablen statt festen Werten.
-
Verwenden Sie klar benannte Seitentypen, um Layoutregeln präzise zuzuweisen.
-
Testen Sie Zwischenergebnisse im Vivliostyle-Preview, bevor Sie den finalen PDF-Export starten.
5.7. Eigene Fonts einbinden
-
Kopieren Sie alle Schriftdateien (empfohlen: woff2 > woff > ttf) in einen Unterordner
fonts/Ihres Styles. -
Deklarieren Sie jede Schnitte eindeutig:
@font-face {
font-family: "Mein Custom Font";
src: url("fonts/MeinFont-Regular.woff2") format("woff2"),
url("fonts/MeinFont-Regular.woff") format("woff");
font-weight: 400;
font-style: normal;
font-display: swap; /* Text bleibt sichtbar, bis die Font geladen ist */
}
@font-face {
font-family: "Mein Custom Font";
src: url("fonts/MeinFont-Bold.woff2") format("woff2"),
url("fonts/MeinFont-Bold.woff") format("woff");
font-weight: 700;
font-style: normal;
font-display: swap;
}
:root {
--ads-body-font: "Mein Custom Font", serif;
--ads-headline-font: "Mein Custom Font", sans-serif;
}
| Prüfen Sie vor dem Einbetten stets die Lizenz. |
macOS / Safari-Besonderheiten
Safari 13 + blendet aus Datenschutzgründen installierte Benutzer-Fonts aus, sobald “Websiteübergreifendes Tracking verhindern” aktiv ist. Sichtbar bleiben nur Kernsystem- und Microsoft-Schriften. CSS-Fonts, die per @font-face eingebettet sind, funktionieren hingegen wie gewohnt.
-
Verlassen Sie sich nie auf lokal installierte Schriften (z. B. Helvetica). Binden Sie jede benötigte Font explizit ein.
-
Verwenden Sie für reine System-Stacks eine breite Fallback-Kette, z. B.:
font-family: -apple-system, BlinkMacSystemFont, "SF Pro Text",
"Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
-
PDF-Export: Da Vivliostyle das HTML rendert, werden eingebettete Fonts zuverlässig in die PDF-Datei übernommen, auch wenn Safari sie im Browser blockiert.
Web-Fonts (Google Fonts & Co.)
| Selbst hosten statt CDN: Bei Online-Veröffentlichung drohen in Deutschland Abmahnungen, wenn Google-Server ohne Opt-In kontaktiert werden. |
Importieren Sie die Dateien lokal wie oben gezeigt oder per relativem Pfad:
@import url("fonts/inter.css"); /* selbst gespeicherte CSS-Datei */
Wenn ein externes CDN unvermeidbar ist:
@import url("[https://fonts.googleapis.com/css2?family=Inter\:wght@300;400;500;700\&display=swap](https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;700&display=swap)");
:root {
--ads-body-font: "Inter", -apple-system, system-ui, sans-serif;
--ads-headline-font: "Inter", -apple-system, system-ui, sans-serif;
}
| Aktivieren Sie ein Consent-Banner oder laden Sie die Fonts erst nach Zustimmung nach, um Datenschutzrisiken zu minimieren. |
Troubleshooting-Checkliste
-
Font-Dateien im Paket vorhanden und Pfade korrekt?
-
Schriftgewichte (
font-weight) stimmen mit den verwendeten Werten überein? -
Safari zeigt die Schrift nicht? →
@font-facewirklich eingebettet, Cache leeren. -
PDF exportiert, aber Font fehlt? → Prüfen, ob Dateinamen Sonderzeichen enthalten.
Mit diesen Hinweisen binden Sie Fonts sicher und plattformübergreifend ein, ohne auf systemabhängige Installationen zu vertrauen.
5.8. Tipps und Tricks
Browser-DevTools für Live-Tests
Öffnen Sie Ihr HTML-Export in einem Browser und nutzen Sie die Entwicklertools:
-
Rechtsklick auf ein Element → "Element untersuchen"
-
Im CSS-Panel können Sie Regeln live bearbeiten
-
Testen Sie Änderungen direkt ohne Neucompilierung
-
Kopieren Sie funktionierende Regeln in Ihr Stylesheet
Verwenden Sie Strg+Shift+C (Windows) oder Cmd+Shift+C (Mac) für den Elementinspektor. |
Cache-Bust-Strategien
Wenn Änderungen nicht sichtbar werden:
-
Hard-Refresh im Browser:
Strg+F5oderCmd+Shift+R -
Browser-Cache leeren
-
In adoc Studio: Projekt schließen und neu öffnen
-
Stylesheet-Cache in adoc Studio zurücksetzen
Häufige Stolperfallen
Übermäßiger !important-Einsatz
/* Schlecht */
.meine-klasse {
color: red ;
font-size: 16px ;
}
/* Besser */
.meine-klasse {
color: red;
font-size: 16px;
}
/* Oder spezifischer */
.content .meine-klasse {
color: red;
font-size: 16px;
}
Fehlende Dark-Mode-Kontraste
/* Problematisch - nur heller Modus */
.warnung {
background-color: #ffff99;
color: #000000;
}
/* Korrekt - beide Modi */
.warnung {
background-color: #ffff99;
color: #000000;
}
@media (prefers-color-scheme: dark) {
.warnung {
background-color: #666600;
color: #ffffff;
}
}
Variable-Scope-Probleme
/* Falsch - Variable nicht definiert */
.element {
color: var(--undefined-variable);
}
/* Korrekt - mit Fallback */
.element {
color: var(--ads-custom-color, #000000);
}
/* Oder Variable definieren */
:root {
--ads-custom-color: #cc0000;
}
5.9. Best Practices und Checkliste vor Release
Konsistente Benennung
Befolgen Sie das adoc Studio Namensschema:
/* Gut */
--ads-primary-color
--ads-sidebar-width
--ads-button-background-color
/* Schlecht */
--my-color
--primaryColor
--sidebar_width
Variablen statt Hard-Codes
/* Schlecht */
.button {
background-color: #3366cc;
color: #ffffff;
border: 1px solid #2255aa;
}
/* Gut */
:root {
--ads-button-bg: #3366cc;
--ads-button-color: #ffffff;
--ads-button-border: #2255aa;
}
.button {
background-color: var(--ads-button-bg);
color: var(--ads-button-color);
border: 1px solid var(--ads-button-border);
}
DRY-Prinzip (Don’t Repeat Yourself)
/* Schlecht - Wiederholung */
.button-primary {
padding: 0.5em 1em;
border-radius: 4px;
font-weight: 500;
background-color: #3366cc;
}
.button-secondary {
padding: 0.5em 1em;
border-radius: 4px;
font-weight: 500;
background-color: #666666;
}
/* Gut - Gemeinsame Basis */
.button {
padding: 0.5em 1em;
border-radius: 4px;
font-weight: 500;
border: none;
cursor: pointer;
}
.button-primary {
background-color: var(--ads-primary-color);
color: white;
}
.button-secondary {
background-color: var(--ads-secondary-color);
color: white;
}
5.10. Checkliste vor Release
-
Alle CSS-Variablen mit
--ads-Präfix definiert -
Dark-Mode-Varianten für alle Farben vorhanden
-
PDF-spezifische Regeln mit
@media vivliostyledefiniert -
Alle Admonitions-Typen gestylt (note, tip, warning, caution, important)
-
Tabellen-Varianten getestet (stripes, grid, frame)
-
Listen-Typen funktionsfähig (ul, ol, checklist, definition)
-
Code-Blocks und Syntax-Highlighting überprüft
-
Responsive Verhalten auf verschiedenen Bildschirmgrößen getestet
-
Kontraste für Barrierefreiheit überprüft (WCAG 2.1 AA)
-
Browser-Kompatibilität getestet
-
info.jsonvollständig ausgefüllt -
Lizenz-Informationen korrekt
-
Dokumentation und Beispiele erstellt
5.11. Weiterführende Ressourcen
5.12. Dokumentation
5.14. CSS-Variablen Referenz
Hier ist eine Übersicht der wichtigsten CSS-Variablen in adoc Studio:
Typografie-Variablen
--ads-body-font /* Grundschrift für Text */
--ads-headline-font /* Schrift für Überschriften */
--ads-monospaced-font /* Schrift für Code */
--ads-toc-font /* Schrift für Inhaltsverzeichnis */
--ads-quote-font /* Schrift für Zitate */
Farb-Variablen
/* Grundfarben */
--ads-color /* Textfarbe */
--ads-color-dark /* Textfarbe (Dark Mode) */
--ads-background-color /* Hintergrundfarbe */
--ads-background-color-dark /* Hintergrundfarbe (Dark Mode) */
/* Überschriften */
--ads-headline-color /* Überschriftenfarbe */
--ads-headline-color-dark /* Überschriftenfarbe (Dark Mode) */
--ads-headline-block-color /* Block-Überschriften */
--ads-headline-small-color /* Kleine Überschriften */
/* Links */
--ads-a-color /* Linkfarbe */
--ads-a-color-dark /* Linkfarbe (Dark Mode) */
--ads-a-hover-color /* Hover-Linkfarbe */
--ads-a-hover-color-dark /* Hover-Linkfarbe (Dark Mode) */
/* Rahmen */
--ads-single-border-color /* Einfache Rahmen */
--ads-border-color /* Transparente Rahmen */
--ads-border-color-dark /* Transparente Rahmen (Dark Mode) */
Tabellen-Variablen
--ads-table-background-color /* Tabellenhintergrund */
--ads-table-background-color-dark /* Tabellenhintergrund (Dark Mode) */
--ads-table-head-background-color /* Kopfzeilen-Hintergrund */
--ads-table-stripes-background-color /* Gestreifte Zeilen */
--ads-table-border-color /* Tabellenrahmen */
Admonitions-Variablen
/* Note (Hinweis) */
--ads-note-color /* Text- und Icon-Farbe */
--ads-note-border-color /* Rahmenfarbe */
--ads-note-background-color /* Hintergrundfarbe */
/* Tip (Tipp) */
--ads-tip-color
--ads-tip-border-color
--ads-tip-background-color
/* Warning (Warnung) */
--ads-warning-color
--ads-warning-border-color
--ads-warning-background-color
/* Caution (Vorsicht) */
--ads-caution-color
--ads-caution-border-color
--ads-caution-background-color
/* Important (Wichtig) */
--ads-important-color
--ads-important-border-color
--ads-important-background-color
Code-Block-Variablen
--ads-code-color /* Code-Textfarbe */
--ads-code-color-dark /* Code-Textfarbe (Dark Mode) */
--ads-pre-background-color /* Code-Block-Hintergrund */
--ads-pre-background-color-dark /* Code-Block-Hintergrund (Dark Mode) */
--ads-listingblock-background-color /* Listing-Block-Hintergrund */
/* Syntax-Highlighting */
--ads-code-keyword-color /* Schlüsselwörter */
--ads-code-string-color /* Strings */
--ads-code-comment-color /* Kommentare */
--ads-code-function-color /* Funktionen */
--ads-code-variable-color /* Variablen */
Eine vollständige Liste aller verfügbaren Variablen finden Sie in der base.css Ihres adoc Studio Pakets. |
Mit diesem umfassenden Leitfaden können Sie professionelle Stylesheets für adoc Studio erstellen und anpassen. Experimentieren Sie mit verschiedenen Ansätzen und nutzen Sie die bereitgestellten Beispiele als Ausgangspunkt für Ihre eigenen Designs.