Help:TemplateStyles/de

TemplateStyles ist ein Tool, um komplexe Stildefinitionen in Vorlagen ohne Administratorrechte zu ermöglichen.

Wie funktioniert es?
Bearbeiter können zu einer Wikiseite hinzufügen, und der Inhalt von   wird als CSS (siehe auch de:CSS) geparst, bereinigt (englisch „sanitized“) und auf Seiten geladen, auf denen das -Tag verwendet wird (direkt oder über eine Muttervorlage).

muss das Seiten-Inhaltsmodell (englisch „content model“; siehe auch de:Wikipedia:Technik/MediaWiki/Content Model)   haben,welches das Standard-Modell für Seiten im Vorlagennamensraum ist, die auf    enden. Üblicherweise wird es genutzt, um die Stildefinitionen für eine  auf einer Unterseite wie   unterzubringen.

Wenn  keinen Namensraumpräfix hat, wird der Vorlagennamensraum angenommen. Das heißt,  wird   laden.

Das -Tag sollte vor dem Inhalt stehen, auf den er wirkt, um kurzzeitig aufblitzende Inhalte ohne Stil (siehe auch de:Flash of Unstyled Content) zu vermeiden, wenn die Seite partiell bereits gerendert wird, während sie noch geladen wird.

Welche Probleme werden gelöst?
Traditionell gibt es zwei Wege, Vorlagen (oder irgendeinen anderen Inhalt) mit Stilen zu versehen: mittels Inline-Definition (durch Benutzen von HTML-Elementen und Anwendung von Attributen wie  auf diese) oder durch Benutzen von Seiten im MediaWiki-Namensraum, wie MediaWiki:Common.css. Keine von diesen Möglichkeiten ist in jeder Hinsicht zufriedenstellend.

In Bezug auf Inline-Styling:


 * Es gibt keine Trennung von Stilen und Inhalt. In Fällen, wo der Inhalt nicht von einer Vorlage kommt (wie Tabellen in Artikeln), wird der Wikitext zu unübersichtlich für die meisten Bearbeiter.
 * Wenn Stile mit Wikitext gemischt werden, ist es (nahezu) unmöglich, Syntaxhighlighting oder andere Formen von CSS-Unterstützung zu bieten.
 * Die Stil-Definitionen müssen für jedes sie benutzende Element wiederholt werden, für das sie genutzt werden sollen, was zu viel Copy-Paste und fast unlesbaren und schwer zu verwaltendem Code führt.
 * Stil-Definitionen sind auf ein Minimum von CSS begrenzt. Hauptsächlich -Regeln, die für Responsives Design benötigt werden, funktionieren nicht, so dass es unmöglich ist, Vorlagen für verschiedene Bildschirmbreiten zum Funktionieren zu bringen. Weiterhin überschreiben Inline-Styles Nutzer-, Skin,- und geräteabhängige Stile, so dass Benutzer,- Skin,- und geräteabhängige Modifikationen unmöglich werden.

In Bezug auf -Seiten:


 * Die Bearbeitung kann nur von Administratoren vorgenommen werden, was die Beteiligung massiv erschwert.
 * Editierbegrenzungen können nicht aufgehoben werden, weil kein Weg existiert, die verfügbaren CSS-Definitionen auf unschädliche Regeln zu begrenzen, die nicht zum Tracken der IP-Adresse eines Lesers geeignet sind oder sogar zum Ausführen von Skripten fähig sind (nur noch in älteren Browsern).
 * Die Änderungen können nicht ohne Speichern getestet werden.
 * Alle Stildefinitionen werden auf allen Seiten geladen, ob sie benutzt werden oder nicht, was Bandbreite verschwendet und das Debugging schwerer macht.

TemplateStyles erlaubt es Bearbeitern, Stildefinitionen zu einer spezifischen Seite hinzuzufügen, während gefährliche Konstrukte gefiltert werden. Das funktioniert auch mit Vorschau-/Debug-Tools (wie der TemplateSandbox; siehe auch de:Hilfe:Vorlagenspielwiese) wie vorhergesehen.

Die Hindernisse zu verringern wird hoffentlich zu mehr Innovation in der Art, wie Vorlagen gestaltet sind, und zu geringerem Wartungsaufwand führen sowie eine bessere Anpassung an die Bildschirmauflösung ermöglichen (vor allem an mobile Geräte, die mittlerweile die Hälfte der Seitenaufrufe der Wikipedia verursachen).

Ist es sicher?
Ja! TemplateStyles enthält einen CSS-Parser, der den CSS-Quelltext liest, serialisiert, allen Code escapet und CSS-Regeln entfernt, die nicht auf seiner Whitelist stehen. Der Parser wird insbesondere externe Ressourcen (wie Hintergrundbilder) entfernen, dabei aber lokale erlauben. Weiterhin werden die CSS-Selektoren umgeschrieben, so dass sie nur innerhalb des Artikeltextes wirksam werden. (Visuelle Änderungen wie das Ändern der Position mit dem Position-Attribut und andere, bereits vorher mit Inline-Definitionen mögliche Definitionen funktionieren wie gehabt.)

Welche CSS-Regeln werden erkannt?
Momentan werden die meisten CSS3-Definitionen akzeptiert, die von einem der größeren Browser unterstützt wurden (Stand Anfang 2017). Neben simplen Regeln funktionieren weiterhin:, , ,  und  /  (wobei font-face aus Sicherheitsgründen auf Schriftarten beschränkt ist, deren Namen mit   beginnt).

Nicht-standardmäßige Eigenschaften (inklusive Hersteller-Präfixen) sind derzeit nicht unterstützt. Siehe T162379 für Pläne.

Wie kann ich mobile und Desktop-Auflösungen berücksichtigen?
Medienabfragen (englisch „media queries“) erlauben es, gezielt Elemente in Auflösungen für Mobil- und Desktopgeräte zu beeinflussen. Manche Leute empfehlen, Stile mobilfreundlich zu gestalten und Desktopstile in die Medienabfrage zu integrieren. Note, MediaWiki has standardised on 720px and 1000px breakpoints to represent tablet and desktop.

How can I target specific skins?
MediaWiki provides various classes on the  and   elements, including one that indicates which skin is in use. These can be targeted by including a simple selector for the  or   element including the needed classes, followed by a space (or in CSS terms, the descendant combinator).

Generally, this technique should be used for design consistency, rather than targeting mobile and desktop as all skins can be used in both mobile and desktop resolutions. See also #How can I target mobile/desktop resolutions?.

In which order do CSS styles override?
Which CSS rule takes effect is controlled by specificity (roughly, the complexity of the selector - e.g.  is more specific than  ). In case of equal specificity, CSS styles that come later in the document override earlier styles.

Mediawiki:Commons.css, other site scripts, user scripts and gadgets are loaded in the  section of the page. TemplateStyles stylesheets are loaded in the, so they override site/user script and gadget rules with equal specificity, and in the case of two TemplateStyles rules, the second overrides the first. (Note though that TemplateStyles rules are deduplicated: if the same stylesheet is referenced multiple times on the page, it is only inserted the first time. Note also that "later" has to do with document position, not load order. Gadgets add their CSS after the page has fully loaded, by manipulating the page with Javascript; some add it on-demand when the user does some action such as clicking a button. Nevertheless, they add it to the head, so equally-specific CSS rules in the body get precedence over it.)

Welche Anti-Missbrauch-Funktionen werden bereitgestellt?
The design choice to store CSS in separate pages was made in part to make integration with the standard anti-abuse toolset easy. TemplateStyles CSS pages have their own content model so changes to them can be tracked or controlled with AbuseFilter, using the   variable.

CSS inclusion is tracked the same way as template transclusion, so you can see where a stylesheet is used via the "What links here" option, see what stylesheets are used on a page under "Page information" (and possibly on the edit screen, depending on what editor you use), and see what recent changes might be affecting a page using "Related changes".

TemplateStyles also leaves identifying information in the HTML code; to find out where a specific rule comes from, look at the page source, and the enclosing  tag will have an attribute like , where 123456 is the revision ID of the stylesheet (viewable with Special:Diff, for example).

Wie wurden die Entscheidungen in Bezug auf TemplateStyles getroffen?
The idea of including CSS with templates was proposed and accepted in a request for comments. Technical details were pinned down in a second RfC and workflow details in a user consultation.

Wer arbeitet an TemplateStyles?
TemplateStyles was originally a project of the Wikimedia Reading Infrastructure team (preceded by exploratory work Coren did as a volunteer), then people moved around. It is now maintained by an ad hoc WMF team consisting of Brad Jorsch (developer), Chris Koerner (community liaison), Dan Garry (product manager), Gergő Tisza (developer) and Grace Gellerman (project manager).

Wo melde ich Fehler/frage nach Features?
Wende dich dazu bitte an den Bereich File Tasks im TemplateStyles-Teil von Phabricator.

Wo kann ich es in Aktion sehen?
Du kannst dir einige Beispiele ansehen.

Die TemplateStyles-Erweiterung ist in allen Wikimedia-Projekten aktiviert.

Aufruf von einem Lua-Modul aus
TemplateStyles kann aus einem Lua-Modul heruas aufgerufen werden mit Hilfe der Erweiterung.

Vergleiche folgenden Beispielcode:

Siehe auch

 * Extension:TemplateStyles (englisch), speziell den Abschnitt #Caveats.