Gespräch:Vector-2022.css MediaWiki-Santinizer gemäße Fehlerbehebung
Über diese Seite Gespräch
-
Vector-2022.css Fehlerbehebung
ChatGPT Sophos GPT-5 Thinking
15. Oktober 2025 n. Chr. erst.
7:30 Uhr Ausgabe 01
Ausgabe 01
freigegeben geprüft
↑ Common.css MediaWiki-Santinizer gemäße Fehlerbehebung
2025101401 Vector-2022.css MediaWiki-Santinizer gemäße Fehlerbehebung
Aufgabenstellung
Hallo Sophos,
heute geht es als erstes um "Vector-2022.css MediaWiki-Santinizer gemäße Fehlerbehebung".
Wir haben gestern den Tag damit verbracvht die Common.css meines MedieWiki so umzugestalten, daß diese nun fehlerfrei vom MediaWiki-Santinizer angenommen wird und wollen dies nun für Vector-2022.css ausüben, die wir bereits zuvor für die Nutzung von Variablen erstellt hatten, jedoch MediaWiki diese Artweise der CSS noch nicht voll unterstützt.
Ich gebe dir hiernach alsbald den letzten Stand von Common.css als Datei zur Sichtung, sodaß du dem entnehmen kannst, wie Vector-2022.css umzugestalten ist. Du kannst schon mal einen Canvas anlegen, in daß ich dann das derzeitige CSS-Coding von Vector-2022.css einfüge.
Die Arbeitsweise ist, daß ich die Änderungen im Canvas ausführe, nachdem du mir die Änderungen erklärt und vermittelt hast. Ich gebe dir jeweils die Fehlermeldung und den bestehende CSS-Syntax, die vom MediaWiki-Santinizer als unerwünscht oder inkompatibel zu sein angemeckert wird.
Derzeit aktiviert für SkinVector ist in LocalSettings.php folgendes:
wfLoadSkin( 'Vector' );
$wgDefaultSkin = 'vector-2022';
$wgVectorNightMode['beta'] = true;
$wgVectorNightMode['logged_out'] = true;
$wgVectorNightMode['logged_in'] = true;
$wgDefaultUserOptions['vector-theme'] = 'night';
Bevor wir damit beginnen, meine erste Frage, muß es MediaWiki:Vector-2022.css wie gegenwärtig oder an sich MediaWiki:Vector.css benannt sein?
Canvas vorbereitet
| Ich muss sicherstellen, dass ich die richtige Antwort auf die Frage zu den CSS-Seiten des MediaWiki-Vektor-Themes gebe. Für das Legacy-Design gilt: MediaWiki:Vector.css, und für das neue Vector 2022: MediaWiki:Vector-2022.css. Auch gibt es Varianten für den Dark Mode, wie MediaWiki:Vector-dark.css – vielleicht auch MediaWiki:Vector-2022-dark.css? Ich werde für genauere Informationen nach aktuellen offiziellen Dokumenten suchen.
Durchsuchen der Webdokumentation für MediaWiki CSS-Seiten Ich muss sicherstellen, dass ich die richtigen Seitenbenennungen habe. Es gibt wohl MedienWiki:Vector.css für das ältere Vektor-Design und MediaWiki:Vector-2022.css für das neue. Auch für den Dark Mode muss ich klären, ob es MediaWiki:Vector-dark.css oder MediaWiki:Vector-2022-dark.css gibt. Ich werde darauf gezielt nachschauen. Suchen nach spezifischen CSS-Seiten für MediaWiki Ich habe die Seite Manual:Interface/Stylesheets gefunden, die das Format für die CSS-Seitennamen angibt, wie z.B. "MediaWiki:skinname.css". Für Vektor 2022 sollte es also "MediaWiki:Vector-2022.css" sein. Ich sollte jedoch auch nach CSS-Dateien für den Dark Mode suchen, wie "MediaWiki:Vector-2022-dark.css". Suchen nach Vector 2022 CSS und dunklem Modus Fertig |
Hallo Nikolaos!
Kurz vorweg zur Benennung: Für das neue Vector-2022 verwendest du MediaWiki:Vector-2022.css. Die Seite MediaWiki:Vector.css gilt für das „alte“ Vector (2010). MediaWiki lädt immer zuerst Common.css und hängt danach die skin-spezifische CSS an – hier also Vector-2022.css. Quellen: Offizielle Doku zu skin-spezifischen Stylesheets und Vector-2022. (MediaWiki)
Zu deinem LocalSettings-Block: Die Night-Mode-Flags und vector-theme='night' entsprechen der aktuellen Empfehlung für Vector-2022 ab MW 1.43. (MediaWiki)
Ich habe dir den Canvas angelegt: „Vector-2022.css — Sanitizer-konforme Überarbeitung (Arbeits-Canvas)“. Füge dort bitte den aktuellen Stand deiner MediaWiki:Vector-2022.css ein. Danach gehe ich Block für Block durch, erkläre die Änderungen (inkl. Sanitizer-Gründen) und liefere dir geprüfte Ersatzregeln.
Bereit, sobald du den Code einfügst.
Common.css als Ausgangsbasis
Im Canvas habe ich den gegenwärtigen Stand von MediaWIki:Vector-2022.css eingefügt.
Ambei erhälts du als Datei den gegenwärtigen Stand von MediaWiki:Common.css. Liest dich ein, erkenne das CSS-Muster, welches Anwendung findet. Schau in den Canvas und spüre die Blocks auf, die diesem Muster nicht entsprechen. Wir besprechen jedoch jede Änderung bevor sie ausgeführt wird!
| Dokumente werden gelesen
Ich muss das Common.css-File bestätigen und die Muster darin identifizieren. Dabei schaue ich mir die Canvas-Pattern von Vector-2022 an, suche nach Verstöße gegen den Sanitizer oder Abweichungen. Ich sollte Änderungen vorschlagen, aber erst nach einer Besprechung. Der Sanitizer blockiert @font-face vermutlich, aber in der MediaWiki-Oberfläche ist das normalerweise erlaubt. Die aktuelle Vector-2022-Implementierung verwendet Tokens wie --bg und --fg, die in Common.css nicht definiert sind. Dort sind Variablen wie --surface und --selection die Standardtexte, aber es gibt auch Unterschiede in der Verwendung von Selektoren. Möglicherweise übernimmt der Sanitizer bestimmte externe Schriftarten nicht, falls sie nicht zugelassen sind. Für die MW-Website sollten wir sicherstellen, dass Verweise auf Cross-Domain-Schriften aufgrund der CSP nicht blockiert werden. Außerdem empfiehlt es sich, die Vector-2022-Tokens an Common.css anzupassen, um Konsistenz zu bewahren. Hintergrundfarbe sollte auf "inherit" geändert werden, ohne nicht definierte Variablen zu verwenden. Es wäre sinnvoll, Fallbacks für Links und Farben bereitzustellen. Die Verwendung von Fertig |
Alles klar, ich habe deine Common.css gelesen und den Vector-2022-Canvas gesichtet. Ich sehe klar das Muster der bereinigten Common.css (Tokens → Content/Editor → Headings → References) und wo Vector-2022.css davon abweicht. Hier ist meine Bestandsaufnahme + konkrete Änderungsvorschläge (nur Vorschläge – noch nichts geändert):
CSS-Muster
1) Token-Ausrichtung & Selektoren
Befund
- In Vector-2022.css werden andere Token-Namen genutzt: --bg, --fg, --overlay-*. In Common.css existieren dagegen z. B. --surface, --selection, --quote-bg und Typo-Tokens. Die Night-Umschaltung geschieht konsistent über .skin-theme-clientpref-night (nicht über html body …).
- Überqualifizierte Selektoren (html.skin-theme-clientpref-night body.skin-vector-2022 …) weichen vom Common-Muster ab (dort kurz: .skin-theme-clientpref-night .mw-parser-output …).
Vorschlag
- Kein eigener Token-Satz in Vector-2022.css. Statt --bg/--fg bitte auf vorhandene Semantik gehen:
- Flächen: background: var(--surface) (wo sinnvoll) oder transparent/unverändert lassen.
- Textfarbe: nicht mit var(--fg), sondern dem erbenden Farbsystem folgen (color: inherit bzw. nichts setzen).
- Selektoren vereinheitlichen: html.skin-theme-clientpref-night body.skin-vector-2022 … → .skin-theme-clientpref-night .skin-vector-2022 … (oder, für Content: .skin-theme-clientpref-night .mw-parser-output …). Das entspricht der Common.css-Logik und reduziert Kollisionen.
2) Grundflächen (Seitenchrome)
Befund
body.skin-vector-2022,
body.skin-vector-2022 .mw-page-container,
body.skin-vector-2022 .mw-body { background-color: var(--bg); }
- --bg ist nicht in Common.css definiert. Außerdem überschreibt das global das Skin-Chrome.
Vorschlag
- Diese Regel entfernen. Vector-2022 bringt ein stimmiges Chrome; wir kümmern uns im Content um Lesbarkeit. Falls du eine dezente Content-Fläche willst, nutze zielgerichtete Container (z. B. Boxen) mit var(--surface).
3) Linkfarben (Night)
Befund
- Eigene Palette in Night für a, a:visited, a:hover, extern und Redlinks – technisch okay, aber überqualifiziert(siehe Punkt 1) und unabhängig vom Common-Muster.
Vorschlag (funktional gleich, im Common-Stil):
/* Night: Links im Content – neutral, Farbe nur bei Hover */
.skin-theme-clientpref-night .mw-parser-output a { color: #f2f2f2; }
.skin-theme-clientpref-night .mw-parser-output a:visited { color: #e6e6e6; }
.skin-theme-clientpref-night .mw-parser-output a:hover { color: #7fa7ff; }
/* Externe Links ohne Icon + Hover-Grün */
.skin-theme-clientpref-night .mw-parser-output a.external { background-image: none; }
.skin-theme-clientpref-night .mw-parser-output a.external:hover { color: #6fcf94; }
/* Redlinks */
.skin-theme-clientpref-night .mw-parser-output a.new { color: #c4c4c4; }
.skin-theme-clientpref-night .mw-parser-output a.new:visited { color: #d2d2d2; }
.skin-theme-clientpref-night .mw-parser-output a.new:hover { color: #ff8c8c; }
- So bleibt’s konform zur Common-Denkweise (Taget: Content, nicht global).
4) OOUI / VE Overlays (Overlay-Tokens)
Befund
Du nutzt var(--overlay-bg/fg/border/accent), die nirgends definiert sind. Effekt ist abhängig vom Browser (fällt auf transparent zurück).
Vorschlag A (einfach, sofort wirksam):
Setze konkrete Werte pro Night-Block, analog Common.css, statt undefinierter Tokens:
/* Night – OOUI/VE Overlays */
.skin-theme-clientpref-night .oo-ui-defaultOverlay,
.skin-theme-clientpref-night .oo-ui-windowManager,
.skin-theme-clientpref-night .oo-ui-window,
.skin-theme-clientpref-night .oo-ui-popupWidget,
.skin-theme-clientpref-night .oo-ui-tooltipWidget,
.skin-theme-clientpref-night .oo-ui-menuSelectWidget,
.skin-theme-clientpref-night .oo-ui-selectWidget,
.skin-theme-clientpref-night .oo-ui-dropdownWidget,
.skin-theme-clientpref-night .oo-ui-lookupElement-menu,
.skin-theme-clientpref-night .ve-ui-overlay,
.skin-theme-clientpref-night .ve-ui-overlay-global,
.skin-theme-clientpref-night .ve-ui-overlay-local {
background-color: #1f1f1f !important;
color: #ddd !important;
border-color: #606060 !important;
}
.skin-theme-clientpref-night .oo-ui-optionWidget.oo-ui-optionWidget-selected,
.skin-theme-clientpref-night .oo-ui-optionWidget.oo-ui-optionWidget-highlighted {
background-color: #2a2a2a !important;
color: #ddd !important;
border-color: #606060 !important;
}
/* VE-Highlights */
.skin-theme-clientpref-night .ve-ce-surface .ve-ce-annotation-active,
.skin-theme-clientpref-night .ve-ce-surface .ve-ce-annotation:hover,
.skin-theme-clientpref-night .ve-ce-surface .ve-ce-selectedNode {
background-color: rgba(127,167,255,0.18) !important;
outline: 1px solid #606060;
color: inherit;
}
Vorschlag B (optional, wenn du Tokens liebst, aber Sanitizer-safe):
Definiere diese nur innerhalb Night-Kontext als Custom Properties (keine color-mix()), dann nutze sie:
/* Night: Overlay-Custom-Properties definieren */
.skin-theme-clientpref-night {
--overlay-bg: #1f1f1f;
--overlay-fg: #ddd;
--overlay-border: #606060;
--overlay-accent: rgba(127,167,255,0.18);
}
/* und dann wie gehabt verwenden */
Beides ist Sanitizer-unkritisch (keine disallowten Funktionen, Properties sind standardkonform). Das Muster entspricht der Common.css-Trennung von Light/Night.
5) Code/Editor-Feintuning
Befund
- Deine Gutter/Code-Ligation-Resets (letter-spacing:0; ligatures:none) sind sinnvoll. In Common.css gibt es bereits umfangreiche Code-Regeln für View/Editor (inkl. Night-Farben). Doppelung vermeiden.
Vorschlag
- In Vector-2022.css nur die Skin-spezifischen Ergänzungen lassen (z. B. Probleme speziell im Vector-Chrome). Alles, was global ist (Codefarben, Inline-Code-Hintergrund), nicht erneut skin-spezifisch setzen – Common.css übernimmt das bereits robust.
6) @font-face (XCharter)
Befund
- @font-face vierfach in Vector-2022.css (woff2, Same-Origin) – grundsätzlich ok. Common.css bindet XCharter als Familie im Content/Editor, hat aber keine @font-face. Reihenfolge ist in der Praxis unkritisch, aber zwei Quellen können irritieren.
Vorschlag
- Variante A: @font-face in Common.css verlagern (oberer Block „0) DESIGN-TOKENS“ vorgelagert), dann in Vector-2022.css entfernen → einheitliche Quelle, weniger Wartung.
- Variante B: So belassen (nur Vector-2022 lädt die Webfonts). Dann bitte keine zweite @font-face-Definition anderswo anlegen, um Doppelquellen zu vermeiden.
7) Kleinere Punkte
- .bereichfenster-content-Aufräumer sind schlank und Sanitizer-neutral → lassen.
- .vector-sitenotice-container { display:none; } ist bewusst; ok, nur Hinweis auf Nebenwirkung(Sitenotices verschwinden auch für Wartungshinweise).
- .ext-replacetext-searchoptions, .oojsplus-data-gridWidget { background-color: var(--bg); } → --bg existiert nicht. Ändern in var(--surface) oder transparent, je nach gewünschter Anmutung.
Nächste Schritte (zur Abstimmung)
- Token-Bereinigung: Entfernen von --bg/--fg in Vector-2022.css, Umstellung auf inherit/transparent/var(--surface) + vereinfachte Selektoren (siehe 1–2).
- Night-Overlays: Entweder feste Werte (A) oder definierte Night-Tokens (B) – beides Sanitizer-konform.
- Linkfarben-Block auf Common-Muster umstellen (siehe Code oben).
- @font-face: Entscheidung A oder B (einheitliche Quelle vs. belassen).
Wenn das für dich stimmig ist, setze ich die konkreten Patch-Blöcke (Block A–E) in den Canvas, jeweils kommentiert und minimal-invasiv. Sag mir, ob du A oder B bei den Overlay-Tokens und Variante A oder B bei @font-facebevorzugst – danach gehe ich in kleinen, überprüfbaren Schritten vor.
CSS-Zwecke
Danke für deine äußerst nützliche und hilfreiche Auswertung des bestehenden CSS-Coding – geradezu ein Masterplan für die Umsetzung bedingter Änderungen.
Bedenke,
1) das gesamte CSS-Coding in Vector-2022.css wurde von dir unter der Annahme entworfen, daß VectorSkin Variablen und moderne Syntax unterstützen würde, daß es jedoch nicht tut und daher das Laden der Seiten infolge verlangsamte, auch wenn dein Coding größteteils tatsächlich funktioniert hatte
2) daß in Vector-2022.css nun einiges als verfehlt oder falsch erscheint, da Common.css dazu nicht mehr passt und bereits die systemkonforme CSS verwendet, die es nun auf Vector-2022.css anzuwenden und diese anzugleichen ist.
3) daß alles was in Vector-2022.css dort hineingelangt war, weil es seinen jeweils bestimmten Zweck hatte und wir daher uns vor jeder Änderung über den Zeck des jeweiligen Block klar werden müssen und nun dafür eine jeweils systemkonforme CSS schreiben müssen um uns den Zweck zu erhalten und oder wiederzuerlangen.
4) das wie gegebenenfalls wie von dir bereits erwähnt Dinge in Vector-2022.css nun besser organisieren und aufstellen können, jedoch sich in Vector-2022.css nur das befinden soll, daß auch VectorSkin-spezifisch ist und alles allgemeine in Common.css auszulagen und vorauszustellen ist, sodaß Vector-2022.css dies infolge nutzen kann.
5) Was an Parametern in Vector-2022.css derzeit gebraucht, jedoch nicht in Common.css vordefiniert wurde, müssen wir gemäß der Vorgaben dann noch in Common.css nachtragen.
Du hast mit deinen Anmerkungen und Vorschlägen 1-7 an sich den Fahrplan bereits vorgegeben, stellt sich nur die Frage, machen wir das CSS-Block für CSS-Block nacheinander und gemäß der jeweiligen Fehlermeldungen oder hast du eine bessere Herangehensweise "im Sinn"?
Ich bevorzuge an sich je Block den CSS-Zweck erneut zu untersuchen, zu bestimmen ob dieser noch oder so gebraucht wird und mittels welcher CSS zu verwirklichen ist.
| Wir sollten den Plan umsetzen, ohne Webcodes zu verwenden, da sie nicht aktuell sind. Es ist besser, Block für Block zu überprüfen, um die Zwecke zu klären. Die Benutzerwünsche sind klar: Diskussion vor Änderungen. Ich schlage vor, die Arbeitsweise zu definieren: Funktionen inventarisieren, sichere Ersetzungen vorschlagen.
Wir sollten blockweise vorgehen, beginnend mit Block 1, dem „hell-dunkel-Schalter“. Der Zweck ist es, die Text-Hintergründe mit den nicht definierten Tokens --bg/--fg zu koppeln. Stattdessen schlagen wir vor, Common-Token zu nutzen. Dazu gibt es einen ersten Patchvorschlag mit Kommentaren. Block 2, das Links-Nacht-Setup, soll vereinfacht werden. Wir schlagen vor, die @font-face-Regeln in Common.css zu verschieben, um die zentrale Verwaltung der Schriftarten zu erleichtern, da Common bereits XCharter als Schriftart Fertig |
Danke, verstanden. Vorgehen nach deinem Punkt 3: je Block zuerst den Zweck klären, dann sanitizer-konforme Umsetzung vorschlagen; nur Vector-spezifisches bleibt in Vector-2022.css, Allgemeines wandert in Common.css (falls dort noch nicht vorhanden). Das Muster deiner bereinigten Common.css ist klar (Tokens → Content/Editor → Headings → References), inkl. Night-Umschaltung über .skin-theme-clientpref-night und Content-Scope .mw-parser-output.
Korrektur der ersten zwei Blöcke
Ich schlage vor, wir starten mit zwei Blöcken, die aktuell Fehlermeldungen/Inkonsistenzen verursachen und zugleich viele Folgethemen entlasten:
Block 1 — „hell-dunkel-Schalter“ (Zweck & Patch-Vorschlag)
Zweck (aus deinem jetzigen Code):
Globales Seiten-Chrome und Content-Textfarbe über --bg / --fg schalten.
Problem:
--bg / --fg sind nirgends definiert (weder in Common noch im Vector-File). Gleichzeitig überschreiben diese Regeln das Skin-Chrome großflächig und sind stärker als nötig. Dein Common-Muster steuert Content-Flächen über --surface und lässt Textfarben i. d. R. erben.
Vorschlag (Vector-spezifisch minimieren, Common-Logik respektieren):
- Entfernen der drei globalen Hintergrund-Regeln auf body/.mw-page-container/.mw-body.
- #firstHeading und .mw-parser-output keine explizite color setzen → erben (Common koppelt Farben/Flächen bereits konsistent).
Patch (zum Ersetzen/Entfernen in Vector-2022.css):
/* ENTFERNEN – überschreibt unnötig das Vector-Chrome und nutzt undef. --bg/--fg
body.skin-vector-2022,
body.skin-vector-2022 .mw-page-container,
body.skin-vector-2022 .mw-body { background-color: var(--bg); }
body.skin-vector-2022 .mw-parser-output { color: var(--fg); }
#firstHeading, #firstHeading .mw-page-title-main { color: var(--fg); }
*/
/* KEIN Ersatz nötig: Farbe und Fläche aus Common.css / Skin erben. */
Erwartete Wirkung:
- Sanitizer-neutral (keine undefinierten Vars).
- Kein ungewolltes Eingreifen in Vector-Chrome; Content bleibt von Common-Tokens gesteuert (z. B. --surface, Selektion).
Block 2 — Links (Night) vereinfachen (Zweck & Patch-Vorschlag)
Zweck (aus deinem jetzigen Code):
Im Night-Profil Links neutral im Ruhezustand, Farbe erst beim Hover; Redlinks/Externals differenziert.
Problem:
Selektoren sind überqualifiziert (html … body.skin-vector-2022 …). Dein Common-Muster arbeitet kurz und Content-fokussiert: .skin-theme-clientpref-night .mw-parser-output a ….
Vorschlag (gleiche Optik, Common-Stil):
/* Night: Links im Content – neutral, Farbe nur bei Hover */
.skin-theme-clientpref-night .mw-parser-output a { color: #f2f2f2; }
.skin-theme-clientpref-night .mw-parser-output a:visited { color: #e6e6e6; }
.skin-theme-clientpref-night .mw-parser-output a:hover { color: #7fa7ff; }
/* Externe Links ohne Icon + Hover-Grün */
.skin-theme-clientpref-night .mw-parser-output a.external { background-image: none; }
.skin-theme-clientpref-night .mw-parser-output a.external:hover { color: #6fcf94; }
/* Redlinks */
.skin-theme-clientpref-night .mw-parser-output a.new { color: #c4c4c4; }
.skin-theme-clientpref-night .mw-parser-output a.new:visited { color: #d2d2d2; }
.skin-theme-clientpref-night .mw-parser-output a.new:hover { color: #ff8c8c; }
Erwartete Wirkung:
- Gleiches Verhalten, kürzere Selektoren, Sanitizer-unkritisch.
- Konsistent mit deiner globalen Content-Bindung in Common.
Vorschau auf die nächsten Blöcke (nur Ankündigung, noch nicht ausführen)
- Block 3 — OOUI/VE Overlays: Deine var(--overlay-…) sind aktuell undefiniert. Lösung: 3A (einfach): Feste Werte direkt im Night-Kontext setzen (Vector-spezifisch). 3B (geordnet): Die --overlay-* innerhalb von .skin-theme-clientpref-night in Vector-2022.css definieren(Skin-spezifisch), nicht in Common. Beide Varianten sind sanitizer-konform (keine color-mix()/Spezialfunktionen).
- Block 0 — @font-face XCharter: Centralisieren. Da Common bereits die Familie im Content bindet, empfehle ich Verschiebung der @font-face nach Common.css (oberhalb Tokens) und Entfernen aus Vector-2022.css, damit nur eine Quelle existiert. (Funktional identisch, weniger Wartung.)
Bitte kurz freigeben, ob wir mit Block 1 (Entfernen der --bg/--fg-Schalter) und Block 2 (vereinfache Link-Regeln) beginnen. Danach gehe ich an Block 3 (Overlays) mit Variante 3B (Overlay-Tokens lokal in Vector-Night definieren), sofern du keinen anderen Zweck für die Tokens vorsiehst.
Block 1 und Block 2 bereinigt – was ist mit den Blöcken zu @font-face?
Ich habe dies von dir gestern schon in Bezug auf Common.css gelernt, es dort ebenso geändert haben und daher gleich umgesetzt.
Ich würde nun ersteinmal die obersten Blöcke zu @font-face in Ordnung bringen.
Muß @font-face nicht doch in Common.css vorgelagert werden?
Was ist mit deinem Vorschlag "6) @font-face (XCharter)" ?
Derzeigt habe ich in jedem der vier Blöcke zu Zeile "font-style: normal;" die Warnung "@font-face declaration doesn't follow the fontspring bulletproof syntax."
Laß uns also als nächstes @font-face bereinigen und zuordnen.
| Ich sollte die Verwendung von @font-face in Common.css ansprechen. Es ist ratsam, es oben zu platzieren und auf die korrekten Quellen zu achten (z. B. woff2 als Hauptquelle, mit einem woff-Fallback). Auch font-display: swap und CORS-Sicherheit berücksichtigen. Externe URLs sollten vermieden werden, falls sie nicht zur gleichen Domain gehören. Ich werde sicherstellen, dass ich die Bulletproof-Syntax verwende.
Ich kann einen Patch für Common.css vorschlagen, um die @font-face-Deklarationen zu verschieben und für Vector einen Entfernungs-Patch erstellen. Es scheint, dass der Benutzer bereits Änderungen in Common.css vorgenommen hat, aber @font-face noch in der Vector-Datei vorhanden ist. Ich sollte die Datei mit einer Suchanfrage auf @font-face in Common.css überprüfen und die Quelle zitieren. Dokumente werden gelesen Ich werde @font-face am besten ganz oben in Common.css setzen, vor den Token. Die moderne, saubere Syntax sollte wie folgt aussehen: "src: local(), url(...woff2), url(...woff)", mit dem fallback font-display: swap. MediaWiki Sanitizer unterstützt das, auch wenn es die "Bulletproof"-Syntax nicht fordert. Dateien sollten lokal und relativ bezogen werden. Ich denke, ich sollte in Canvas den @font-face-Block entfernen und einen "Vorschlagsblock 0" hinzufügen, der anzeigt, dass er nach Common.css verschoben werden soll. Da Common.css nicht direkt geändert werden kann, könnten wir aber einen fertigen Block in einer Nachricht bereitstellen und um Bestätigung bitten, bevor wir fortfahren. Fertig |
Gut, gehen wir @font-face sauber an.
Entscheidung & Platzierung
Ja – @font-face gehört in MediaWiki:Common.css ganz nach oben (vor die Tokens). Gründe:
- Die Schrift wird global im Content/Editor genutzt (siehe deine
font-family: "XCharter", serif;in Content und Edit-Bindungen) – also nicht skin-spezifisch. - Eine einzige Quelle verhindert doppelte Downloads/Inkonsistenzen; Vector-2022.css bleibt wirklich skin-spezifisch.
- Dein jetziges Common-Muster erwartet genau diese Reihenfolge (Fonts → Tokens → Content/Editor …).
Im Gegenzug entfernen wir den Block „0) Webfonts – XCharter“ aus Vector-2022.css.
Zur Warnung „doesn’t follow the fontspring bulletproof syntax“
Das ist ein Lint-/Best-Practice-Hinweis, kein Sanitizer-Blocker. Die historische „Fontspring/Fontsquirrel bulletproof“ galt v. a. für IE/EOT. Für MW 1.43/1.44 reicht modernes WOFF2 (+ WOFF-Fallback) mit local() voll aus. (Fakt: Sanitizer prüft erlaubte Deskriptoren; Mutmaßung: die Warnung kommt aus einem CSS-Linter, nicht aus dem Sanitizer selbst.)
Saubere, moderne @font-face-Definition (für Common.css)
Füge diesen Block oberhalb deiner DESIGN-TOKENS in Common.css ein (falls noch nicht geschehen); Pfade root-relativ, Same-Origin, mit font-display: swap:
/* === Webfonts: XCharter (Same-Origin) =================================== */
@font-face {
font-family: "XCharter";
src:
local("XCharter"),
local("XCharter Roman"),
local("XCharter-Roman"),
url("/mediawiki/resources/fonts/xcharter/XCharter-Roman.woff2") format("woff2"),
url("/mediawiki/resources/fonts/xcharter/XCharter-Roman.woff") format("woff");
font-weight: 400;
font-style: normal;
font-display: swap;
}
@font-face {
font-family: "XCharter";
src:
local("XCharter Italic"),
local("XCharter-Italic"),
url("/mediawiki/resources/fonts/xcharter/XCharter-Italic.woff2") format("woff2"),
url("/mediawiki/resources/fonts/xcharter/XCharter-Italic.woff") format("woff");
font-weight: 400;
font-style: italic;
font-display: swap;
}
@font-face {
font-family: "XCharter";
src:
local("XCharter Bold"),
local("XCharter-Bold"),
url("/mediawiki/resources/fonts/xcharter/XCharter-Bold.woff2") format("woff2"),
url("/mediawiki/resources/fonts/xcharter/XCharter-Bold.woff") format("woff");
font-weight: 700;
font-style: normal;
font-display: swap;
}
@font-face {
font-family: "XCharter";
src:
local("XCharter Bold Italic"),
local("XCharter-BoldItalic"),
url("/mediawiki/resources/fonts/xcharter/XCharter-BoldItalic.woff2") format("woff2"),
url("/mediawiki/resources/fonts/xcharter/XCharter-BoldItalic.woff") format("woff");
font-weight: 700;
font-style: italic;
font-display: swap;
}
Hinweise
- Pfade: Nutze root-relative (
/mediawiki/...) statthttps://…, damit Staging/Hostwechsel neutral bleiben. local(): unkritisch – wenn lokal installiert, wird keine Webfont geladen.font-display: swap: verbessert Rendering (keine leeren Frames).- Optional:
unicode-rangekannst du später ergänzen (Optimierung, nicht nötig).
Anpassung in Vector-2022.css (Canvas)
- Entfernen des kompletten Abschnitts „0) Webfonts – XCharter“ am Anfang (vier @font-face-Blöcke).
- Keine weiteren Änderungen nötig; die Stellen, die „XCharter“ verwenden, bleiben in Common.css verankert (Content/Editor).
Vorgehen:
- Bestätigst du die Platzierung in Common.css so?
- Soll ich im Canvas (Vector-2022) jetzt den Webfonts-Block löschen und darunter einen kleinen Kommentar „Fonts zentral in Common.css“ setzen?
Saubere, moderne @font-face-Definition (für Common.css) eingerichtet.
@font-face ist aus Vector-2022.css nun entfernt und die neue CSS dazu in Common.css ganz oben vorgelagert – noch vor "root:…".
Den Canvas überarbeite ich in diesen Sachen, daß geht sicherer und schneller. Nur wenn du über Blöcke hinweg ausbessern oder ändern mußt ist dies dein Job.
Kommen wir zum nächsten Block: 4) Technisches / Editor (Day + Night)
.vector-sitenotice-container { display: none; }
span.mw-page-title-namespace,
span.mw-page-title-separator { display: none; }
A) Zeile: span.mw-page-title-namespace,
Warning: Element (span.mw-page-title-namespace) is overqualified, just use .mw-page-title-namespace without element name.
B) Zeile: span.mw-page-title-separator { display: none; }
Warning: Element (span.mw-page-title-namespace) is overqualified, just use .mw-page-title-namespace without element name.
Was ist dessen Zweck und wie machen wir es nun?
.vector-sitenotice-container
| Wir sollten erklären, dass der Zweck der Anweisung darin besteht, das "sitenotice-container" und den Namespace mit Separator aus dem Seitentitel zu verstecken. Der Hinweis auf überqualifizierte Elemente bedeutet, dass man gezieltere Selektoren verwenden sollte. Auch könnte es Auswirkungen auf die Barrierefreiheit geben, da Breadcrumbs betroffen sein könnten.
Es könnte tricky sein, aber ich denke, die Klasse .vector-sitenotice-container existiert. Citations sind nur nötig bei der Verwendung von speziellen Tools. Ich schlage vor, die Selektoren nur auf Klassen zu beschränken, entweder für die gesamte Seite oder innerhalb eines spezifischen Bereichs (wie .skin-vector-2022). Der Namespace könnte entfernt werden, aber das beeinträchtigt die Unterscheidung zwischen verschiedenen Namensräumen. Fertig |
Guter nächster Schritt.
Zweck der drei Regeln (Block 4)
.vector-sitenotice-container { display:none; }Zweck: Sitenotices (z. B. Wartungs-/Banner-Hinweise) im Vector-2022-Chrome verbergen.span.mw-page-title-namespace, span.mw-page-title-separator { display:none; }Zweck: In der Titelzeile Namespaces (z. B. „Benutzer:“) und den Doppelpunkt-Separator ausblenden, damit der sichtbare Titel „ruhiger“ wirkt.
Linter-Hinweis „overqualified“
Das ist korrekt: Die Klassen sind eindeutig; das Präfix span erhöht nur unnötig die Spezifität. Sanitizer-relevant ist es nicht, aber besser wartbar ohne Element-Qualifier.
Nebenwirkungen (Fakten)
- Sitenotice komplett aus: Du verpasst globale Hinweise (z. B. Wartung).
- Namespace/Separator aus: Man erkennt im Header nicht mehr, ob man z. B. in Benutzer: oder Vorlage: ist (der Breadcrumb bleibt, aber der große Titel ist „neutraler“).
Varianten (wähle A oder B)
Variante A – Einfach & global (aktuelles Verhalten, nur korrekt formuliert)
/* Sitenotice in Vector-2022 verstecken (immer) */
.skin-vector-2022 .vector-sitenotice-container { display: none; }
/* Namespacepräfix und Separator im Titel ausblenden (immer) */
.skin-vector-2022 #firstHeading .mw-page-title-namespace,
.skin-vector-2022 #firstHeading .mw-page-title-separator { display: none; }
- Vorteil: minimaler Code, klares Ergebnis.
- Nachteil: Hinweise/Titelinfos sind immer weg – auch für abgemeldete Nutzer.
Variante B – Konservativer: nur in „Anzeigen“-Ansicht & nur für Angemeldete
/* Sitenotice nur für angemeldete Nutzer ausblenden (anonyme sehen Hinweise weiter) */
body.logged-in.skin-vector-2022 .vector-sitenotice-container { display: none; }
/* Namespace & Separator nur in der Leseansicht („action=view“) ausblenden */
body.action-view.skin-vector-2022 #firstHeading .mw-page-title-namespace,
body.action-view.skin-vector-2022 #firstHeading .mw-page-title-separator { display: none; }
- Vorteil: Wartungs-/Systemhinweise bleiben für anonyme sichtbar; beim Bearbeiten/Bewegen bleibt die klare NS-Kennzeichnung im Titel erhalten.
- Nachteil: etwas mehr Bedingungen.
Empfehlung
Aus deiner Arbeitsweise (ruhiger Lesemodus, aber keine Informationsverluste bei „kritischen“ Aktionen) folgt Variante B. Sie ist sanitizer-konform, reduziert Spezifität, und wahrt Orientierung bei Edit-/Move-/Upload-Ansichten.
Wenn du dich entschieden hast (A oder B), setze ich dir den entsprechenden Patchblock vorbereitet in den Canvas (ohne andere Bereiche zu verändern).
.vector-sitenotice-container Mittelweg
Tatsächlich weiß ich nicht mehr, was da mich warum am gestört hat und ich ihn deswegen weg haben wollte. Ich habe jetzt folgenden Block aktiviert:
/* Sitenotice nur für angemeldete Nutzer ausblenden (anonyme sehen Hinweise weiter) */
body.logged-in.skin-vector-2022 .vector-sitenotice-container { display: none; }
/* Namespace & Separator nur in der Leseansicht („action=view“) ausblenden */
/*body.action-view.skin-vector-2022 #firstHeading .mw-page-title-namespace,*/
/*body.action-view.skin-vector-2022 #firstHeading .mw-page-title-separator { display: none; } */
Somit die Mitte deines Vorschlag .
Zeile: body.logged-in.skin-vector-2022 .vector-sitenotice-container { display: none; }
Warning: Element (body.logged-in.skin-vector-2022) is overqualified, just use .logged-in without element name.
Was ist zu ändern?
skin-vector-2020 Überqualifizierung
| Die Benutzeranfrage betrifft einen überqualifizierten Selektor „body.logged-in.skin-vector-2022“. Eine bessere Wahl wäre: ".logged-in.skin-vector-2022 .vector-sitenotice-container { display: none; }". Dabei sollte der Körper-Selektor entfernt werden, da er zu spezifisch ist. Alternativ könnte ".logged-in .skin-vector-2022 .vector-sitenotice-container" verwendet werden. Eine genauere Nightskin-Targeting-Strategie könnte ebenfalls in Betracht gezogen werden.
Fertig |
Ja—der Linter meckert zu Recht: das Präfix body ist überflüssig. Die Klassen logged-in und skin-vector-2022 reichen völlig.
Ersetze genau diese Zeile:
/* vorher */
body.logged-in.skin-vector-2022 .vector-sitenotice-container { display: none; }
/* nachher (gleiches Verhalten, geringere Spezifität) */
.logged-in.skin-vector-2022 .vector-sitenotice-container { display: none; }
Warum das passt
- In MediaWiki sitzt
skin-vector-2022auf dem<body>. Das Selektorziel bleibt identisch, nur ohne Element-Qualifier. - Geringere Spezifität = leichter zu übersteuern, falls du später temporär ein Sitenotice wieder sichtbar machen willst.
Optional (noch „weicher“):
Wenn du den Skin-Scope nicht brauchst (weil der Containername ohnehin Vector-spezifisch ist), ginge auch:
.logged-in .vector-sitenotice-container { display: none; }
Ich würde aber deine aktuelle Absicht (nur im Vector-Skin) beibehalten und die erste Variante verwenden.
Sag Bescheid, wenn ich dir danach die übrigen überqualifizierten Selektoren in diesem Block (und die html … body …-Ketten bei VE/OOUI) als kleine, sichere Patchserie vorbereiten soll.
skin-vector-2020 Überqualifizierung entfernen
Ich habe dann Letzteres genommen und im Canvas bereits eingerichtet.
Allgemein sollten wir wohl auf ".skin-vector-2022" verzichten können, da wir ja dies bereits mit dem Namen von MediaWiki:Vector-2022.css vermitteln.
Ja , nun kannst du alle Blöcke dahingehend berichtigen, daß ist deine Art Aufgaben, die du besser und schneller ausüben kannst.
Korrekturen (im Canvas erfolgt)
| Ich sollte den Canvas-Code so anpassen, dass wir kürzere Selektoren verwenden, wie zum Beispiel ".skin-theme-clientpref-night ..." oder sogar ".mw-code" und unnötige Teile entfernen. Die Variablen für das Overlay wie "--overlay-bg" müssen im Night-Kontext definiert werden. Auch muss der Hintergrund auf var(--surface) oder transparent geändert werden und veraltete Zeilen entfernt werden. Let’s implementieren das!
Die Benutzer haben zugestimmt, Änderungen vorzunehmen, aber die Entwickleransicht zeigt noch alte Daten. Ich werde folgende Anpassungen vornehmen:
Ich werde "color Fertig |
Alles klar — ich habe im Canvas die überqualifizierten Selektoren bereinigt und die problematischen Stellen systemkonform umgestellt. Konkret:
Umgesetzte Korrekturen (im Canvas erfolgt)
- Block „1) hell-dunke-Schalter“ entfernt Begründung:
--bg/--fgsind bei dir nicht definiert, zudem überschrieben die Regeln unnötig das Skin-Chrome. Farben/Flächen kommen aus Common.css via Tokens (z. B.--surface) und Content-Scope.mw-parser-output. - Überqualifizierung reduziert Alle Vorkommen von
html.skin-theme-clientpref-… body.skin-vector-2022 …→.skin-theme-clientpref-… …. Dein Common-Muster arbeitet bereits so. - Overlay-Variablen sauber definiert (Night) Neu im File:
.skin-theme-clientpref-night { --overlay-bg: #1f1f1f; --overlay-fg: #dddddd; --overlay-border: #606060; --overlay-accent: rgba(127,167,255,0.18); --background-color-base-fixed: #1f1f1f; --background-color-backdrop-dark: rgba(0,0,0,0.65); }
Damit funktionieren alle nachfolgenden OOUI/VE-Blöcke ohne Undef-Variablen, ohne color-mix() etc. (Sanitizer-konform).
color: var(--fg);→color: inherit;Nur in den betroffenen VE/Overlay-Blöcken angepasst. So bleibt das Farbsystem konsistent (Vererbung statt fiktiver Tokens) – exakt wie in Common.css angelegt.- Hintergrund-Fix bei Drittwidgets
.ext-replacetext-searchoptions, .oojsplus-data-gridWidget { background-color: var(--surface); }Vorher stand dortvar(--bg)(undefiniert). Jetzt an dein Token-Set angepasst.
Offenes / Nächster Schritt (kurz)
- VE/OOUI-Sammlung: Durch die vereinfachten Selektoren ist das Paket jetzt konsistent. Falls du noch weitere „overqualified“-Warnungen siehst, nenne mir bitte die Zeilen — ich bereite dann gezielte Minimal-Patches vor.
- Namespace/Separator im Titel hast du bewusst auskommentiert gelassen; das bleibt so.
- Link-Regeln (Night) stehen bereits im Common-Stil (Content-Scope), keine Aktion nötig.
Möchtest du als nächstes die VE-Highlight/Resize-Gruppe testen (ob Farbe/Outline jetzt wie gewünscht wirken) oder gehen wir an die Gutter/Code-Regeln (der Doppelsatz Day/Night, jetzt ohne html body-Kette)?
Zeilennummern-Gutter als Nächstes
Ich habe deine Änderungen so wie von dir ausgeführt bei mir in MediaWiki übernommen.
Wir gehen weiter Block für Block gemäß dem vor, daß MediaWiki Linter oder Santinizer mir anzeigen.
Block: /* Verhindere vererbtes Tracking in der MediaWiki-Codeansicht (Zeilennummern-Gutter) */
.skin-theme-clientpref-night .mw-code,
.skin-theme-clientpref-night .mw-code * {
letter-spacing: 0; /* kein breiteres Rendering → keine Überlappung */
font-variant-ligatures: none; /* keine Ligaturen in Mono-Code */
}
Zeile: .skin-theme-clientpref-night .mw-code * {
Warning: The universal selector (*) is known to be slow.
Ändern auf einen anderen Selector, wenn möglich?
Zeilennummer Gutter sagt mir nichts weiter. Wenn das ein rest aus einem Versuch ist Überschriften, Listzen, Paragraphen Zeilennummern zuzuordnen, dann kann dies im Ganzen weg.
Es geht darum, zu entscheiden, ob das universelle *-Selektor entfernt werden soll. Das Gutter bezieht sich auf den Bereich für Zeilennummern in MediaWiki-Codeblöcken, oft durch SyntaxHighlight oder Diff hinzugefügt. Besser wäre ein selektiverer Ansatz, etwa .mw-code pre, .mw-code code. Man sollte universelle Selektoren vermeiden, um spezifische Elemente anzusprechen.
Die Idee ist, den Die ursprüngliche Blockierung könnte überflüssig sein, da Common.css vermutlich bereits Fertig |
Gute Entscheidung, den Universal-Selector zu vermeiden. Ich habe den gesamten Gutter-Block im Canvas so umgebaut, dass er ohne * auskommt und trotzdem alle relevanten Code-Unterelemente umfasst.
Was ich konkret geändert habe
- Themen-Präfixe entfernt (
.skin-theme-clientpref-night/day …) – der Zweck ist unabhängig vom Farbschema. - Universal-Selector entfernt und durch gezielte Targets ersetzt:
.mw-code,.mw-code pre,.mw-code code,.mw-code kbd,.mw-code samp.mw-highlight,.mw-highlight pre.mw-highlight .linenos,.mw-highlight .linenos pre
- Regeln zusammengeführt (ein Block für alle Modi).
Der neue Block im Canvas heißt jetzt:
/* Codeansicht (inkl. Zeilennummern-Gutter) – keine Ligaturen, kein Letter-Tracking */
.mw-code,
.mw-code pre,
.mw-code code,
.mw-code kbd,
.mw-code samp,
.mw-highlight,
.mw-highlight pre,
.mw-highlight .linenos,
.mw-highlight .linenos pre {
letter-spacing: 0;
font-variant-ligatures: none;
}
Kurzbegründung
- Performance: Kein
*→ weniger Selektor-Last. - Zweckrein: Wir fassen nur echte Code-Elemente + die üblichen Line-Number-Container an.
- Sanitizer/Linter: Standard-Eigenschaften, keine verbotenen Funktionen → sauber.
Kann der Block komplett weg?
- Fakt: Wenn nirgendwo
letter-spacing> 0 oder Ligaturen auf Code erben, ist der Block redundant. - Mutmaßung: In deiner Common.css sind Typo-Regeln teils global; falls dort jemals Tracking aktiviert wird, schützt dieser Block davor, dass Monospace-Code „wandert“. Deshalb halte ich den Block als sichere Kante für sinnvoll – er schadet nicht und verhindert künftige Artefakte.
Wenn du magst, testen wir jetzt kurz:
- Eine Seite mit
SyntaxHighlight(mit und ohne Zeilennummern) und eine Diff-Ansicht öffnen. - Prüfen, ob Zeichenabstände/Überlappungen sauber sind.
Sag mir die nächsten Linter-/Sanitizer-Hinweise, dann gehe ich Block für Block weiter.
Block OOUI / VE – Overlays, Popups, Menüs, Tooltips (global)
Zwischenstand: Gespräcch:Vector-2022.css MediaWiki-Santinizer gemäße Fehlerbehebung/MediaWiki:Vector-2022.css 02
Jetzt weiß ich wieder woher der Block stammt. Wir hatten andere zuvor vorhandene CSS für SyntaxHighlight für VectorSkin angepasst
Das Coding hatten wir entworfen, weil die Zeilennummern und sonstiges nicht stimmig waren. Ich habe dein Coding so übernommen und überprüft – so scheint alles bestens zu sein.
Gehen wir daher gleich zum nächsten Block über.
Block: /* === OOUI / VE – Overlays, Popups, Menüs, Tooltips (global) === */
html.skin-theme-clientpref-night .oo-ui-defaultOverlay,
html.skin-theme-clientpref-night .oo-ui-windowManager,
html.skin-theme-clientpref-night .oo-ui-window,
html.skin-theme-clientpref-night .oo-ui-window-body,
html.skin-theme-clientpref-night .oo-ui-window-head,
html.skin-theme-clientpref-night .oo-ui-window-foot,
html.skin-theme-clientpref-night .oo-ui-popupWidget,
html.skin-theme-clientpref-night .oo-ui-popupWidget-body,
html.skin-theme-clientpref-night .oo-ui-tooltipWidget,
html.skin-theme-clientpref-night .oo-ui-menuSelectWidget,
html.skin-theme-clientpref-night .oo-ui-selectWidget,
html.skin-theme-clientpref-night .oo-ui-dropdownWidget,
html.skin-theme-clientpref-night .oo-ui-lookupElement-menu,
html.skin-theme-clientpref-night .ve-ui-overlay,
html.skin-theme-clientpref-night .ve-ui-overlay-global,
html.skin-theme-clientpref-night .ve-ui-overlay-local {
background-color: var(--overlay-bg) !important;
color: var(--overlay-fg) !important;
border-color: var(--overlay-border) !important;
}
Zeilen Warning: Use of !important
"!Important" eliminieren und möglicherweise noch wegen "html." am Anfang überqualifiziert?
Zwischenstand: Gespräcch:Vector-2022.css MediaWiki-Santinizer gemäße Fehlerbehebung/MediaWiki:Vector-2022.css 03
Block OOUI / VE – Overlays, Popups, Menüs, Tooltips (global) erster Ansatz
| Wir sollten darauf hinweisen, dass !important entfernt und Selektoren vereinfacht werden sollten. Zielgerichtete Klassen auf übergeordneten Elementen sind sinnvoll, insbesondere bei .skin-theme-clientpref-night. Neue Selektoren wie :is() könnten problematisch sein. Inline-Stile können nur mit !important überschrieben werden, da sie Vorrang haben, es sei denn, der Autor setzt ebenfalls !important.
OOUI verwendet hauptsächlich Klassen und Less-Variablen, nicht unbedingt Inline-Stile, außer bei der Position. Der Benutzer möchte !important entfernen, also sollten wir sorgfältig prüfen, ob es nötig ist. Ein zweistufiger Ansatz könnte sinnvoll sein, mit einer Standardregel ohne !important und minimaler Nachsteuerung, wenn bestimmte Widgets fehlerhaft sind. Ich plane, die Selektoren minimal zu ändern: Statt 'html.skin-theme-clientpref-night' verwende ich '.skin-theme-clientpref-night' und entferne !important bei einigen Regeln. Dabei achte ich darauf, dass keine wichtigen Überschreibungen zerstört werden. Ich werde das als Patch vorbereiten und die betroffenen Blöcke anpassen. Fertig |
Guter Fang. Ich habe den Overlay-Block im Canvas wie folgt bereinigt:
Was geändert wurde
- Überqualifizierung entfernt
html.skin-theme-clientpref-night …→.skin-theme-clientpref-night …(kürzer, gleiche Wirkung). !importantentfernt, wo nicht nötig Ausbackground-color,color,border-color,mix-blend-mode,opacity,background,background-image,box-shadow. Begründung: Wir erhöhen nicht künstlich die Spezifität; der Night-Kontext + konkrete Widget-Klassen reicht in der Regel aus.color: var(--fg)→color: inheritin VE-Highlight-Blöcken So bleibt die Schriftfarbe im Fluss deines globalen Farbsystems;--fggibt es bei dir nicht.
Warum das ohne !important funktionieren sollte (Fakten)
- OOUI/VE setzen Farben/Hintergründe typischerweise klassenbasiert, nicht via Inline-Styles; Night-Scope + Klassenmatching überschreibt die Defaults regulär.
- Deine Night-Custom-Properties sind bereits im Body-Scope definiert, daher greifen die
var(--overlay-*)zuverlässig.
Falls irgendwo noch Kontrast/Überlagerung auftritt (Vorgehen)
- Minimal-Ausnahme: Nur für die betroffenen Eigenschaft und betroffene Klasse
!importantzurückgeben. Beispiele, die gelegentlich Inline-Styles/Hardcodes haben:outline/box-shadowbei Resize-Handles in älteren VE-Buildsbackgroundbei .oo-ui-optionWidget-selected in manchen Themes
Ich würde jetzt zwei UI-Stellen prüfen:
- OOUI-Dropdown (z. B. Sprache wählen, oder ein Menü in Special:Preferences).
- VE Link-Bearbeitung (Link setzen → Overlay/Widget). Wenn du mir sagst, wo noch ein Stil nicht greift, setze ich eine punktuelle, begründete
!important-Stelle – aber nur dort.
Nächster Blockvorschlag: die Menu/OptionWidget-Zustände (Selected/Highlighted) und die VE-Resizer – beides ist bereits ohne !important gestellt; wir können das gezielt gegentesten oder direkt an den nächsten Linter-Hinweis gehen.
Block OOUI / VE – Overlays, Popups, Menüs, Tooltips (global) erster Ansatz Fehler
Wir belieben noch bei Block:
/* === OOUI / VE – Overlays, Popups, Menüs, Tooltips (global) === */
.skin-theme-clientpref-night .oo-ui-defaultOverlay,
.skin-theme-clientpref-night .oo-ui-windowManager,
.skin-theme-clientpref-night .oo-ui-window,
.skin-theme-clientpref-night .oo-ui-window-body,
.skin-theme-clientpref-night .oo-ui-window-head,
.skin-theme-clientpref-night .oo-ui-window-foot,
.skin-theme-clientpref-night .oo-ui-popupWidget,
.skin-theme-clientpref-night .oo-ui-popupWidget-body,
.skin-theme-clientpref-night .oo-ui-tooltipWidget,
.skin-theme-clientpref-night .oo-ui-menuSelectWidget,
.skin-theme-clientpref-night .oo-ui-selectWidget,
.skin-theme-clientpref-night .oo-ui-dropdownWidget,
.skin-theme-clientpref-night .oo-ui-lookupElement-menu,
.skin-theme-clientpref-night .ve-ui-overlay,
.skin-theme-clientpref-night .ve-ui-overlay-global,
.skin-theme-clientpref-night .ve-ui-overlay-local {
background-color: var(--overlay-bg);
color: var(--overlay-fg);
border-color: var(--overlay-border);
}
Zeile: background-color: var(--overlay-bg);
Warning: Expected (<color>) but found 'var(--overlay-bg)'.
Zeile: color: var(--overlay-fg);
Warning: Expected (<color>) but found 'var(--overlay-fg)'.
Zeile: border-color: var(--overlay-border);
Warning: Expected (<color>{1,4}) but found 'var(--overlay-border)'.
Dies ist noch anzupassen, gebe mir nur die drei neuen Zeilen, ich ersetze das dann im Canvas.
Block OOUI / VE – Overlays, Popups, Menüs, Tooltips (global) erster Ansatz Korrektur
background-color: #1f1f1f;
color: #dddddd;
border-color: #606060;
Gut – danke. Nun zu selbes Thema in Block : /* Menüeinträge – Hover/Selected */
.skin-theme-clientpref-night .oo-ui-optionWidget.oo-ui-optionWidget-selected,
.skin-theme-clientpref-night .oo-ui-optionWidget.oo-ui-optionWidget-highlighted {
background-color: #2a2a2a;
color: var(--overlay-fg);
border-color: var(--overlay-border);
}
Zeile: color: var(--overlay-fg);
Warning: Expected (<color>) but found 'var(--overlay-fg)'.
Zeile: border-color: var(--overlay-border);
Warning: Expected (<color>{1,4}) but found 'var(--overlay-border)'.
Nächste Korrektur
color: #dddddd;
border-color: #606060;
Nächster
Danke – wieder ähnliches oder gleiches im Block: /* === VisualEditor – aktive/hoverte Annotationen (z. B. Link-Highlight) === */
.skin-theme-clientpref-night .ve-ce-surface .ve-ce-annotation-active,
.skin-theme-clientpref-night .ve-ce-surface .ve-ce-annotation:hover,
.skin-theme-clientpref-night .ve-ce-surface .ve-ce-selectedNode {
background-color: var(--overlay-accent) !important;
outline: 1px solid var(--overlay-border);
color: inherit;
}
angemeckert wird hier !important und Warning: Expected (<color>) but found 'var(--overlay-accent)'.
in Zeile: background-color: var(--overlay-accent);
Nächste Korrektur
background-color: rgba(127, 167, 255, 0.18);
outline: 1px solid #606060;
color: inherit;
Nächster
Offenbar übersehen habe ich da den Block: /* === VisualEditor – Resizer & Badge beim Ziehen von Bildern === */
.skin-theme-clientpref-night .ve-ce-resizeHandle,
.skin-theme-clientpref-night .ve-ce-resizeHandles,
.skin-theme-clientpref-night .ve-ce-resizeBox,
.skin-theme-clientpref-night .ve-ui-resizeOverlay,
.skin-theme-clientpref-night .ve-ui-resizeWidget {
background-color: var(--overlay-bg);
color: var(--overlay-fg);
border-color: var(--overlay-border);
}
Zeile: background-color: var(--overlay-bg);
Warning: Expected (<color>) but found 'var(--overlay-bg)'.
Zeile: color: var(--overlay-fg);
Warning: Expected (<color>) but found 'var(--overlay-fg)'.
Zeile: border-color: var(--overlay-border);
Warning: Expected (<color>{1,4}) but found 'var(--overlay-border)'.
background-color: #1f1f1f;
color: #dddddd;
border-color: #606060;
Fokus-/Selectable-Highlights
danke – kommen wir zum nächsten Block: /* B) Fokus-/Selectable-Highlights (Bilder/Tabellen etc.) */
.ve-ce-focusableNode-highlight,
.ve-ce-focusableNode-highlight-selectable,
.ve-ce-selectedNode {
background: var(--overlay-accent); /* shorthand → überschreibt background-* */
background-image: none;
box-shadow: 0 0 0 1px var(--overlay-border) inset;
color: inherit;
}
Zeile: box-shadow: 0 0 0 1px var(--overlay-border) inset;
Warning: Expected end of value but found 'var(--overlay-border)'.
Was war der Zweck? Was sollte nun sein?
Fokus-/Selectable-Highlights Korrektur
| Der Zweck des box-shadow war, eine subtile Einfassung zu erzeugen, die im Fokus sichtbar ist. Als Ersatzlinie für die box-shadow wird empfohlen, die Farbe in #606060 zu ändern. Für den Hintergrund sollte rgba(127,167,255,0.18) verwendet werden. Hintergrundbild "none" ist korrekt.
Fertig |
Zweck: eine dezente, layout-neutrale Markierung für fokussier-/auswählbare VE-Objekte:
background= sanfter Highlight-Filmbox-shadow … inset= 1-px-Innenkontur (ähnlich Outline, aber ohne Layoutänderung)
Sanitizer-konform (ohne var(...)):
background: rgba(127, 167, 255, 0.18);
box-shadow: 0 0 0 1px #606060 inset;
color: inherit;
(Hinweis: Wenn der Film zu schwach wirkt, erhöht 0.18 → z. B. 0.22.)
Block Bild-Resizing
Danke für Änderungen und Hinweis – habe ich so übernommen.
Kommen wir daher zu Block:
/* D) Bild-Resizing – Badge/Griffe (einige Versionen nutzen images/gradients) */
.ve-ui-resizeWidget,
.ve-ui-resizeWidget *,
.ve-ui-resizeWidget-label,
.ve-ui-resizeWidget-handle,
.ve-ui-resizeOverlay,
.ve-ce-resizeHandle,
.ve-ce-resizeHandles,
.ve-ce-resizeBox {
background: var(--overlay-bg) !important;
background-image: none;
color: var(--overlay-fg);
border-color: var(--overlay-border);
}
Zeile: .ve-ui-resizeWidget *
Warning: The universal selector (*) is known to be slow.
Zeile: background: var(--overlay-bg) !important;
Warning: Use of !important
Zeile: color: var(--overlay-fg);
Warning: Expected (<color>) but found 'var(--overlay-fg)'.
Zeile: border-color: var(--overlay-border);
Warning: Expected (<color>{1,4}) but found 'var(--overlay-border)'.
Diesen Block hast du mein ich präventiv eingefügt – brauchen wir den wirklich?
Block Bild-Resizing
Die Verwendung des universellen Selektors (*) sowie von !important und var() könnte unnötig sein. Ich würde empfehlen, den universellen Selektor zu entfernen und die Farbwerte konkret festzulegen. Wenn nicht alles notwendig ist, könnte man den D)-Block komplett löschen oder die Selektoren gezielt anpassen. Vorschläge:
Möglicherweise auch auf den Nachtmodus einschränken. Fertig |
Kurz und klar:
Zweck & Ist-Stand
Der Block D) Bild-Resizing – Badge/Griffe ist bei dir redundant: denselben Zweck deckt der frühere Block „VisualEditor – Resizer & Badge beim Ziehen von Bildern“ bereits ab (gleiche Targets, gleiche Eigenschaften). Zusätzlich enthält D:
- einen Universal-Selektor (
.ve-ui-resizeWidget *) → langsam, !important,- und
var(...)-Farben, die wir ohnehin durch konkrete Farben ersetzt haben.
Empfehlung (Variante A – bevorzugt)
Block D komplett löschen.
Du verlierst keine Funktion; Doppelregeln entfallen, Linter/Sanitizer sind zufrieden.
Falls du Block D behalten willst (Variante B – minimal, konform)
Ersetze ihn durch diese kürzere, !important-freie Fassung (ohne Universal-Selektor, mit festen Farben); optional auf Night scopen:
/* D) Bild-Resizing – Badge/Griffe (konform, ohne Duplikate) */
.skin-theme-clientpref-night .ve-ui-resizeWidget,
.skin-theme-clientpref-night .ve-ui-resizeWidget-label,
.skin-theme-clientpref-night .ve-ui-resizeWidget-handle,
.skin-theme-clientpref-night .ve-ui-resizeOverlay,
.skin-theme-clientpref-night .ve-ce-resizeHandle,
.skin-theme-clientpref-night .ve-ce-resizeHandles,
.skin-theme-clientpref-night .ve-ce-resizeBox {
background: #1f1f1f;
background-image: none;
color: #dddddd;
border-color: #606060;
}
Wenn du A wählst: löschen und fertig.
Wenn du B wählst: bitte zusätzlich den früheren Resizer-Block entfernen, damit es keine Doppeldefinitionen gibt.
Letzter Block
Block D gelöscht und damit fertig.
Verblieben als letzter ist Block: .ext-replacetext-searchoptions, .oojsplus-data-gridWidget {
background-color: var(--surface);
}
Warning: Expected (<color>) but found 'var(--surface)'.
Geschafft
Geschafft! – herzlichen Dank – einige Fehler sind bereits verschwunden.
Ich habe da einige sehr lange Wikiseiten mit viel Coding und SyntaxHighlight und die laden nun in einem drittel der Zeit gegenüber zuvor.
| Ich sollte den Erfolg bestätigen und vielleicht noch einige abschließende Prüfungen vorschlagen. In den verbleibenden B- und C-Abschnitten auf der Canvas gibt es noch var(--overlay-accent), was zu Warnungen führen könnte. Ich werde vorschlagen, diese mit festen Werten zu ersetzen, wie zum Beispiel rgba(127,167,255,0.18). Auch das Entfernen duplizierter Definitionen wäre ratsam. Drei schnelle Anpassungen.
Fertig |
Stark – das ist ein deutlicher Geschwindigkeitsgewinn.
Zum Aufräumen sehe ich noch drei kleine Punkte im Canvas, damit Linter/Sanitizer ganz ruhig sind:
- Doppeltes Setzen derselben OOUI-Variable Im Canvas wird
--background-color-base-fixedzwei Mal im Night-Scope gesetzt. Lass eine der beiden Definitionen stehen (die frühere in „2.5 Night-Overlay-Custom-Properties“ reicht), die spätere kannst du löschen. - Restliche
var(...)in „5) VE/OOUI – weitere Dunkel-Fixes → B) Fokus/Selectable“ Hier tauchenvar(--overlay-accent)undvar(--overlay-border)erneut auf. Ersetze sie wie zuvor:
/* B) Fokus-/Selectable-Highlights (Bilder/Tabellen etc.) */
.ve-ce-focusableNode-highlight,
.ve-ce-focusableNode-highlight-selectable,
.ve-ce-selectedNode {
background: rgba(127, 167, 255, 0.18);
background-image: none;
box-shadow: 0 0 0 1px #606060 inset;
color: inherit;
}
- Gleiche Stelle in „5)C) Link-Annotationen“ Auch dort noch
var(--overlay-accent)– bitte ersetzen:
/* C) Link-Annotationen im VE (Markierung beim Setzen/Bearbeiten) */
.ve-ce-linkAnnotation,
.ve-ce-annotation-active,
.ve-ce-annotation:hover {
background: rgba(127, 167, 255, 0.18);
background-image: none;
color: inherit;
}
Wenn diese drei Anpassungen drin sind, sollte Vector-2022.css vollständig sanitizer-konform sein.
Melde dich, falls irgendwo noch ein Warnhinweis aufploppt – dann gehe ich gezielt darauf.
Letzter Feinschliff CSS-Mutmaßungen
Danke für die zusätzlichen Hinweise. Ich hatte bereits Änderungen vorgenommen, die ich im Canvas wohl nicht eingetragen habe. Schaue bitt nochmals das Coding im Canvas durch.
Prüfe auch ob etwas wirklich sein muß. VErgleichsweise "Viele Widgets nutzen var(--background-color-base-fixed) " ist eine Mutmaßung, daß dies in meinem MediaWiki sein könnte – hineingelangt, ohne daß ich zuvor sagte, daß es so ist – löschen?
Ich überprüfe die Canvas-Inhalte und möchte auf mögliche Änderungen hinweisen. Zuerst gibt es eine Annahme zu var(--background-color-base-fixed), die gelöscht werden könnte. Ich finde dann doppelte CSS-Definitionen und eine Syntaxfehler im Fokus-Highlight, wo ein Semikolon fehlt. Zudem scheint ein schließender Block und ein abschließendes Kommentar zu fehlen, was den Code brechen würde.
Es erscheint sinnvoll, Es scheint in Ordnung zu sein, die vorgeschlagenen Anpassungen vorzunehmen. Ich werde den Night-Overlay-Custom-Properties-Block und den "OOUI Theme-Variablen"-Block entfernen, den Syntaxfehler bei Ich werde die folgenden Änderungen vornehmen: den Night-Overlay-Custom-Properties-Block entfernen, indem ich den Abschnitt leeren oder mit einem Kommentar versehen habe. Der "OOUI Theme-Variablen"-Block wird ebenfalls entfernt. Den fehlerhaften „box-shadow“-Eintrag fixiere ich und ergänze die schließende Klammer für Fertig |
Ich habe den Canvas geprüft und drei gezielte Korrekturen umgesetzt:
- Entfernt: „2.5) Night-Overlay-Custom-Properties“ Begründung: Wir haben alle
var(--overlay-*)bereits durch feste Werte ersetzt. Die Custom-Properties waren spekulativ und wurden nirgends mehr verwendet. Damit entfällt auch--background-color-base-fixed. (Du hattest das explizit zur Disposition gestellt.) - Entfernt: „OOUI Theme-Variablen – minimaler Fix …“ Das war eine Doppeldefinition (Backdrop-Var nochmal) ohne aktuelle Verwendung. Weg damit.
- Syntax-Fix: In 5)B) Fokus-/Selectable-Highlights war die
box-shadow-Zeile durch einen Zeilenumbruch vorinsetsyntaktisch zerrissen. Jetzt korrekt:
box-shadow: 0 0 0 1px #606060 inset;
color: inherit;
- Fehlende Klammer ergänzt: Beim Block
.skin-theme-clientpref-night .ext-replacetext-searchoptions,
.skin-theme-clientpref-night .oojsplus-data-gridWidget {
background-color: #1f1f1f;
fehlte die schließende } – ist ergänzt.
Offene Prüfungen
- Im gesamten File sollten jetzt keine
var(...)-Verwendungen mehr vorkommen, nur noch Definitionen in Common.css (Fonts/Tokens). - Keine
!importantin den Overlay-/VE-Blöcken mehr vorhanden. - Keine überqualifizierten
html … body …-Ketten mehr.
Wenn der Linter/ Sanitizer noch etwas meldet, poste mir bitte die genauen Zeilen.
Ansonsten wäre mein Vorschlag als letzter Feinschliff: kurz Testen von 1) OOUI-Dropdown, 2) VE-Link-Dialog, 3) SyntaxHighlight mit Zeilennummern, 4) ReplaceText-Maske – sollten jetzt sauber und konsistent wirken.
Linter und Santinizer sind zufrieden
Das war mal eine echt gelungene Zusammenarbeit
– im Wechsel machte jeder sein Ding nach bestem vermögen.
Jetzt haben wir den Stand erlangt, daß wir uns an die CSS der Vorlagen gemäß Extension:TemplateStyle und …/styles.css begeben können und dort unsere früheren CSS-Sünden bereinigen können. Wenn du nichts mehr zu Vector-2022.csss hast, was noch gemacht werden muß, dann gehen wir zum nächsten Chat über, in dem ich dir dann erneut vermittle was getan werden soll. Dazu benötige ich keine weiteren Hinweise deinerseits. Also vielen Dank für deinen Ünterstützung und bis bald – oder hast du noch etwas wichtiges/dringendes?
Abschlußwort
Klingt gut. Von meiner Seite: keine offenen Pflichtpunkte mehr für Vector-2022.css. Der Canvas-Stand ist konsistent, sanitizer-konform und ohne unnötige Spezifität.
Kurzabschluss (optional zu prüfen, kein Muss):
- Einmal Cache leeren (Seite purgen + Browser-Cache), dann zwei, drei typische Oberflächen testen: OOUI-Dropdown, VE-Link-Dialog, SyntaxHighlight mit Zeilennummern, ReplaceText.
- Wenn du später wieder Sitenotices brauchst: die Regel
.logged-in .vector-sitenotice-container { display: none; }temporär auskommentieren. - Behalte beim nächsten MW/OOUI-Update ein Auge auf VE-Klassen (selten, aber gelegentlich ändert sich eine Klasse).
Wenn du bereit bist, wechseln wir rüber zu TemplateStyles und räumen die Vorlagen-CSS auf. Bis gleich.