Hilfe Center

Inhalte richtig bauen: Markdown, HTML und Animation

Was in den beiden Formaten des Editors geht, was der Bildschirm entfernt und wie lange ein animierter Inhalt laufen darf. Mit Beispielen zum Kopieren.

Ein Inhalt mit der Vorlage Dokument besteht aus Text, den Sie im Editor als Markdown oder als HTML schreiben. Welches der beiden gilt, wählen Sie im Feld Format. Markdown genügt für die meisten Texte, HTML brauchen Sie für eigene Gestaltung und für Bewegung.

Diese Anleitung zeigt, was in beiden Formaten geht, was der Bildschirm entfernt und wie lange ein animierter Inhalt laufen darf. Jedes Beispiel lässt sich kopieren und im Editor einfügen; die Vorschau daneben zeigt sofort, wie es am Bildschirm aussieht.

Markdown

Markdown ist gewöhnlicher Text mit wenigen Zeichen für die Gestaltung.

Text formatieren

  • # Titel, ## Untertitel für Überschriften
  • **fett**, *kursiv*
  • Zeile mit - beginnen für eine Aufzählung, mit 1. für eine nummerierte
  • Neue Zeile: einfach Enter drücken
  • --- in eigener Zeile zieht eine Trennlinie
  • [Text](https://…) für einen Link
  • Bild einfügen: Knopf Bild einfügen über dem Textfeld. Ausrichten: "center" oder "right" hinter die Bild-URL, z.B. ![Titel](url "center") (sonst links)

Icon-Kürzel

Ein Kürzel wird zu einem farbigen Symbol-Button, die zweite Form ist zusätzlich animiert:

  • :phone: / :phone-ring: Telefon, klingelt
  • :link: / :link-pulse: Link, pulsiert
  • :mail: / :mail-shake: Brief, wackelt
  • :calendar: / :calendar-flip: Kalender, blättert
  • :location: / :location-bounce: Ort, wippt

Eine Uhrzeit wie 10:30 bleibt unverändert.

HTML im Markdown

Markdown darf rohes HTML enthalten, etwa ein <div> oder ein <style> mit einer Animation. Dafür gelten dieselben Regeln wie im Format HTML, auch für die Länge. Was der Bildschirm entfernt, steht im nächsten Abschnitt.

Beispiel in Markdown
# Wasserunterbruch

Am **Dienstag** fällt von 8 bis 11 Uhr das Wasser aus.

- Füllen Sie vorher einen Krug ab.
- Fragen beantwortet die Verwaltung :phone:

---

Danke für Ihr Verständnis.

HTML

Im Format HTML schreiben Sie einen HTML-Ausschnitt, ohne <html>, <head> und <body>.

Erlaubte Formatierung

Übliche Tags funktionieren: <h1> bis <h3>, <p>, <strong>, <em>, <ul> / <ol> / <li>, <a href="…">, <br>, <mark>. Für die Gestaltung stehen <div> und <span> mit class und style bereit, eigenes CSS schreiben Sie in ein <style>.

Bilder

Nur Bilder aus der Mediathek, also Adressen unter /cdn/assets/…. In der Mediathek kopiert der Knopf URL kopieren die Adresse eines Bildes. Ein <img> mit einer fremden Adresse entfernt der Bildschirm ganz, ebenso ein <image> in einer SVG-Grafik.

Adressen im CSS

Auch CSS darf nur laden, was aus der Mediathek kommt. Das gilt für url() in jeder Eigenschaft, für image-set() und für @import, im style-Attribut wie in einem <style>-Block. Bilder und Schriften dürfen Sie zusätzlich direkt als data: einbetten, etwa eine Schrift mit src: url(data:font/woff2;base64,…) in @font-face. Steht im CSS eine andere Adresse, lässt sich der Inhalt nicht speichern, und der Editor weist Sie schon vorher mit einem Hinweis darauf hin.

Was entfernt wird

Vor dem Anzeigen entfernt der Bildschirm:

  • jedes <script>
  • <iframe>, <object> und <embed>
  • Event-Handler wie onclick oder onload
  • Links mit javascript:
  • Bilder, Videos und Töne von fremden Adressen (<img>, <video>, <audio>, <source>)
  • CSS mit einer fremden Adresse: im style-Attribut fällt das ganze Attribut weg, in einem <style>-Block die betroffene Regel
  • in SVG-Grafiken jeder Verweis auf eine andere Datei, etwa fill="url(https://…)" oder <use href="https://…">
  • alles, was nicht auf den Listen im nächsten Abschnitt steht, etwa <input>, <form> oder das Merkmal background an einer Tabelle

Enthält Ihr Inhalt etwas davon, zeigt der Editor unter dem Textfeld einen Hinweis. Ein solcher Inhalt lässt sich nicht speichern, und die Ablehnung nennt die Stelle. Die eine Ausnahme ist ein Bild in Markdown-Schreibweise mit fremder Adresse: es wird gespeichert, erscheint am Bildschirm aber nicht.

Icon-Badges

Die Kürzel wie :phone: gelten nur im Markdown-Modus. In HTML schreiben Sie den Badge direkt als <span> mit zwei Klassen, eine dritte Klasse setzt ihn in Bewegung:

  • Telefon: q-ico q-ico-tel, klingelnd mit q-anim-ring
  • Link: q-ico q-ico-link, pulsierend mit q-anim-pulse
  • Brief: q-ico q-ico-mail, wackelnd mit q-anim-shake
  • Kalender: q-ico q-ico-cal, blätternd mit q-anim-flip
  • Ort: q-ico q-ico-pin, wippend mit q-anim-bounce

Zum Beispiel <span class="q-ico q-ico-tel q-anim-ring">☎</span>.

Beispiel in HTML
<div>
  <h2>Waschküche</h2>
  <p>Ab <strong>1. November</strong> gilt der neue Plan.</p>
  <ul>
    <li>Montag bis Freitag, 7 bis 21 Uhr</li>
    <li>Samstag, 8 bis 18 Uhr</li>
  </ul>
  <p><mark>Sonntag bleibt die Waschküche geschlossen.</mark></p>
  <p><span class="q-ico q-ico-tel">☎</span> Fragen beantwortet die Verwaltung.</p>
</div>

Erlaubte Elemente und Merkmale

Der Bildschirm zeigt nur Elemente und Merkmale, die auf den Listen unten stehen. Alles andere entfernt er vor dem Anzeigen, und der Editor weist Sie schon vorher mit einem Hinweis darauf hin. Bei einem Element wie <font> oder <center> fällt nur das Element weg, der Text darin bleibt stehen. Die Listen sind dieselben, nach denen der Bildschirm bereinigt.

SVG-Grafiken sind erlaubt, auch mit Verläufen, Masken und Schatten. Ein Verweis darf dabei nur innerhalb des Inhalts zeigen, etwa fill="url(#verlauf)" oder <use href="#punkt">. Verweise auf andere Dateien und Bilder von fremden Adressen entfernt der Bildschirm.

HTML-Elemente

<h1><h2><h3><h4><h5><h6><p><br><hr><div><span><section><article><figure><figcaption><strong><b><em><i><u><s><mark><small><sub><sup><code><pre><blockquote><ul><ol><li><table><caption><thead><tbody><tfoot><tr><th><td><a><img><video><audio><source><track><style>

SVG-Elemente

<svg><g><defs><symbol><use><title><desc><path><rect><circle><ellipse><line><polyline><polygon><text><tspan><clipPath><mask><pattern><marker><linearGradient><radialGradient><stop><image><filter><feDropShadow><feGaussianBlur><feOffset><feFlood><feComposite><feMerge><feMergeNode><feBlend><feColorMatrix>

Merkmale an jedem Element

classidtitlelangdirrolestylearia-…data-…

Zusätzliche Merkmale einzelner HTML-Elemente

  • <a>: hrefxlink:hreftargetrel
  • <img>: srcaltwidthheight
  • <video>: srcposterwidthheightcontrolsautoplayloopmutedplaysinlinepreload
  • <audio>: srccontrolsautoplayloopmutedpreload
  • <source>: srctype
  • <track>: srckindsrclanglabeldefault
  • <ol>: startreversedtype
  • <li>: value
  • <th>: colspanrowspanscope
  • <td>: colspanrowspan

Merkmale an jedem SVG-Element

xmlnsxmlns:xlinkviewBoxpreserveAspectRatiotransformxywidthheightcxcyrrxryx1y1x2y2fxfydxdydpointspathLengthfillfill-opacityfill-rulestrokestroke-widthstroke-linecapstroke-linejoinstroke-dasharraystroke-dashoffsetstroke-miterlimitstroke-opacityopacitycolordisplayvisibilityvector-effectpaint-orderfont-familyfont-sizefont-weightfont-styletext-anchorletter-spacingword-spacingtext-decorationdominant-baselinealignment-baselinebaseline-shiftclip-pathclip-ruleclipPathUnitsmaskmaskUnitsmaskContentUnitsfilterfilterUnitsprimitiveUnitsmarker-startmarker-midmarker-endmarkerWidthmarkerHeightmarkerUnitsrefXrefYorientpatternUnitspatternContentUnitspatternTransformgradientUnitsgradientTransformspreadMethodoffsetstop-colorstop-opacityinin2resultstdDeviationflood-colorflood-opacityoperatork1k2k3k4modetypevalues

Zusätzliche Merkmale einzelner SVG-Elemente

  • <use>: hrefxlink:href
  • <image>: hrefxlink:href

Merkmale mit einer Adresse

  • <a href><a xlink:href>: Ein Link mit http, https, mailto, tel oder eine relative Adresse. Ein anderes Ziel wird entfernt, der Text des Links bleibt stehen.
  • <img src><video src><audio src><source src><track src><image href><image xlink:href>: Nur eine Adresse aus der Mediathek (/cdn/assets/…). Sonst wird das ganze Element entfernt.
  • <video poster>: Nur eine Adresse aus der Mediathek (/cdn/assets/…). Sonst wird allein das Merkmal entfernt.
  • <use href><use xlink:href>: Nur ein Verweis innerhalb des Inhalts wie #punkt. Sonst wird das Merkmal entfernt.
  • jedes SVG-Merkmal: url() nur als Verweis innerhalb des Inhalts wie url(#verlauf). Steht darin eine andere Adresse, wird das Merkmal entfernt.
  • style: Adressen nur aus der Mediathek, dazu Bilder und Schriften als data:. Die Einzelheiten stehen im Abschnitt HTML unter „Adressen im CSS“.
Beispiel: eine SVG-Grafik mit Verlauf und einem Verweis innerhalb des Inhalts
<div>
  <svg viewBox="0 0 320 80" role="img" aria-label="Willkommen">
    <defs>
      <linearGradient id="verlauf">
        <stop offset="0" stop-color="#12296b" />
        <stop offset="1" stop-color="#1a5c3a" />
      </linearGradient>
      <circle id="punkt" r="10" />
    </defs>
    <rect width="320" height="80" rx="12" fill="url(#verlauf)" />
    <use href="#punkt" x="40" y="40" fill="white" />
    <text x="64" y="47" fill="white" font-size="22">Willkommen</text>
  </svg>
</div>

Animation und Länge

Bewegung entsteht allein über CSS-Animationen, in einem <style> oder im style-Attribut, denn Skripte entfernt der Bildschirm. Aus diesen Animationen ergibt sich die Länge eines Inhalts.

So wird gemessen

  • Eine Endlosschleife (infinite) zählt mit ihrer Dauer. Ihre Verzögerung verschiebt nur, an welcher Stelle der Schleife sie einsetzt, und zählt nicht mit.
  • Eine endliche Animation zählt mit Verzögerung plus Dauer mal Wiederholungen: animation: titel 5s 2s 3 ergibt 17 Sekunden.
  • Hat ein Inhalt mehrere Animationen, zählt die längste.
  • Die Bewegung der Icon-Badges (Klassen, die mit q-anim- beginnen) zählt nicht mit.
  • Hat ein Inhalt mehrere Sprachfassungen, zählt die längste davon.

Die Grenze

Ein animierter Inhalt darf höchstens 30 Sekunden lang sein, dieselbe Grenze wie für ein Video. Der Editor zeigt die gemessene Länge unter der Vorschau und sperrt das Speichern, solange sie darüber liegt. Ein Video wird beim Hochladen auf die Grenze gekürzt, ein zu langer animierter Inhalt dagegen wird beim Speichern abgelehnt: gekürzt fehlte am Bildschirm still sein Ende.

Steht an einer Zeitstelle var(), calc() oder eine verwandte Funktion wie min(), max() oder clamp(), lässt sich die Länge nicht bestimmen, und der Inhalt wird beim Speichern ebenfalls abgelehnt. Schreiben Sie Dauer und Verzögerung als feste Werte in s oder ms, oder geben Sie die Länge mit data-duration selbst an.

Am Bildschirm

Ist die gemessene Länge grösser als 12 Sekunden, hält der Inhalt seine Zone für genau einen Durchgang, wie ein Video, und danach folgt der nächste Inhalt. Eine kürzere Animation hält nichts fest: der Inhalt wechselt im gewohnten Takt, und eine kleine Schleife wie ein pulsierender Pfeil läuft einfach mit, solange er zu sehen ist. Das gilt in jeder Zone des Bildschirms.

Beispiel: ein Titel blendet einmal ein, zwei Zeilen wechseln sich in einer Schleife von 20 Sekunden ab
<div>
  <style>
    .titel { animation: einblenden 2s ease-out 1s both; }
    .wechsel { position: relative; }
    .wechsel p { animation: zeigen 20s linear infinite; }
    .wechsel p + p { position: absolute; top: 0; animation-delay: -10s; }
    @keyframes einblenden { from { opacity: 0; } to { opacity: 1; } }
    @keyframes zeigen {
      0%, 45% { opacity: 1; }
      50%, 95% { opacity: 0; }
      100% { opacity: 1; }
    }
  </style>
  <h2 class="titel">Herbstputz am Samstag</h2>
  <div class="wechsel">
    <p>Treffpunkt 9 Uhr im Hof.</p>
    <p>Handschuhe und Säcke stehen bereit.</p>
  </div>
</div>

Länge selbst angeben mit data-duration

Mit dem Attribut data-duration legen Sie die Länge eines Inhalts selbst fest, etwa <div data-duration="20s">. Die Angabe gewinnt über die Messung der Animationen, auch wenn diese länger oder nicht bestimmbar wäre; var() und calc() in den Animationen spielen für die Länge dann keine Rolle mehr. Sie gilt auch für einen Inhalt ganz ohne Animation, der dann genau so lange in seiner Zone steht. Anders als eine gemessene Länge hält eine angegebene die Zone auch dann, wenn sie unter 12 Sekunden liegt.

Wo die Angabe stehen muss

Am äussersten Element, also am ersten Element im Quelltext. Ein <style>, ein <script> und Kommentare davor werden übersprungen. In Markdown zählt das erste HTML-Element im Rohtext, auch wenn darüber eine Überschrift mit # steht. An einem inneren Element wirkt die Angabe nicht.

Gültige Werte

Eine Zahl mit s oder ms, zum Beispiel 20s, 1500ms oder 12.5s. Ungültig sind eine Zahl ohne Einheit, ein Leerzeichen zwischen Zahl und Einheit, ein Komma statt des Punkts und der Wert null. Bei einem ungültigen Wert sperrt der Editor das Speichern und nennt den Wert. Auch für die Angabe gilt die Grenze von höchstens 30 Sekunden.

Beispiel in HTML: 20 Sekunden ohne Animation
<div data-duration="20s">
  <h2>Hausversammlung</h2>
  <p>Donnerstag, 19 Uhr, im Gemeinschaftsraum.</p>
</div>
Beispiel in Markdown: die Angabe am ersten HTML-Element
<div data-duration="15s">

# Lift in Wartung

Bis Freitag bitte die Treppe benutzen.

</div>

Die Falle: <style> als erstes Element

Steht ein <style> als erstes Element im Quelltext, hebt der Browser es beim Einlesen in den Kopf des Dokuments, und dort verwirft es der Bildschirm. Dann fehlen die Animationen, und der Editor misst auch keine Länge. Die Vorschau im Editor zeigt das genauso, Sie sehen es also vor dem Speichern.

Die Abhilfe ist ein umschliessendes Element: setzen Sie den ganzen Inhalt samt <style> in ein <div>. In Markdown gilt dasselbe, wenn der Text mit einem <style> beginnt.

So fällt das <style> weg
<style>
  .titel { animation: einblenden 2s both; }
  @keyframes einblenden { from { opacity: 0; } to { opacity: 1; } }
</style>
<h2 class="titel">Willkommen</h2>
So bleibt es erhalten
<div>
  <style>
    .titel { animation: einblenden 2s both; }
    @keyframes einblenden { from { opacity: 0; } to { opacity: 1; } }
  </style>
  <h2 class="titel">Willkommen</h2>
</div>

Zurück zum Hilfe Center