Benutzer:Entlinkt/display:none

aus Wikipedia, der freien Enzyklopädie
Zur Navigation springen Zur Suche springen

In der deutschsprachigen Wikipedia wird derzeit (April 2016) an zahlreichen Stellen versucht, Artikelinhalte, die per se unsinnig sind oder an unsinnigen Stellen stehen, mittels der CSS-Anweisung display:none „unsichtbar“ zu machen; teilweise wird anschließend versucht, sie an einer anderen Stelle oder nur für bestimmte Szenarien wieder sichtbar zu machen.

In Einzelfällen mag es sinnvoll sein, ein Element per display:none aus- und ggf. nur unter bestimmten Umständen wieder einzublenden; soweit es aber um tatsächlich unsinnige oder an unsinnigen Stellen stehende Elemente geht, ist display:none schon vom Grundansatz her die falsche Technik und funktioniert auch nicht sauber. Eine saubere Lösung wäre es, diese Elemente stattdessen überhaupt nicht oder an einer passenderen Stelle zu erzeugen. Dennoch wird anstelle der sauberen Lösung aus den verschiedensten Gründen teilweise an problematischen Workarounds festgehalten.

Diese Seite versucht, in erster Linie den Ist-Zustand zu beschreiben. In einigen Fällen sind auch Alternativen zum Ist-Zustand aufgeführt.

Die Nennung bekannter Probleme erhebt ausdrücklich nicht den Anspruch, vollständig zu sein. Insbesondere ist nicht zu erwarten, dass es ausreichen würde, alle hier genannten Anwendungen dazu zu bringen, display:none im gewünschten Sinne zu interpretieren, da es sicherlich (ggf. auch erst in Zukunft) weitere Anwendungen geben wird, die dies nicht tun und auch gar nicht tun wollen, da sie eine andere Interpretation der Semantik von display:none haben.

Absolut positionierte Elemente[Bearbeiten | Quelltext bearbeiten]

Intention: Platzierung von Elementen außerhalb des regulär beschreibbaren Bereichs, in der Regel „oben rechts“.

Ist-Zustand: Komplett absurder Murks bestehend aus völlig ungeeigneten und nur notdürftig „funktionierenden“ Hacks, ausführlich dokumentiert im Text der Kategorie:Vorlage:mit Seitenindikator.

Probleme:

  • Die Elemente stehen im Markup an der falschen Stelle. Sie tauchen deshalb zum Beispiel in Suchergebnissen an der falschen Stelle auf, weil sie weder durch das display:none in MediaWiki:Common.css bzw. MediaWiki:Mobile.css entfernt noch durch anderes CSS effektiv verschoben werden, und bringen – selbst nachdem sie per CSS vermeintlich „nach oben rechts verschoben“ wurden – weiterhin die Tastaturnavigation durcheinander.
  • Darstellungsfehler (Überlappungen), die durch die verwendeten – für diesen Zweck völlig ungeeigneten – CSS-Techniken inhärent bedingt sind und die niemand beheben wird, weil das prinzipiell unmöglich ist.
  • Inhärente Skinabhängigkeit: Es wird sicherlich immer schwieriger werden, noch Admins zu finden, die bereit sind, diesen Hack weiter aufrecht zu erhalten oder gar auf neue Skins auszuweiten, weil man dafür den Aufbau aller Skins kennen muss. Selbst der jetzige Ist-Zustand ist nur dadurch möglich, dass die Standarddarstellung der Skins durch lokale Hacks in einigen Aspekten verschlechtert wurde; für das Mobil-Frontend wurde die Übernahme des Hacks vorerst verweigert (phab:T91481).
  • Die dem Hack zugrundeliegenden CSS-Techniken sind nicht nur ungeeignet, sondern auch gefährlich, weshalb es im Raum steht, sie softwareseitig zu unterbinden. Der Fortbestand dieses Hacks ist bereits deutlich angezählt.

Saubere Lösung: Umbau sinnvoller Vorlagen auf <indicator>-Tags und Rückbau unsinniger Vorlagen. Schwierig, weil sich das Aussehen und Verhalten der Vorlagen dadurch in jedem Fall ändern wird.

class="metadata"[Bearbeiten | Quelltext bearbeiten]

Intention: Ursprünglich nur die standardmäßige Ausblendung der Vorlage:Personendaten und individuelle Wiedereinblendung durch Benutzer-CSS, später MediaWiki:Gadget-Personendaten.css und Ausweitung auf weitere Elemente.

Ist-Zustand: Undokumentiertes Chaos.

Probleme:

  • Das display:none steht in MediaWiki:Common.css und MediaWiki:Mobile.css, aber nicht jede Anwendung interessiert sich dafür. Vermutlich ist es sogar gewollt, dass die interne Suche Bereiche mit class="metadata" findet (für die Paramater „NUTS“ und „LOCODE“ der Vorlage:Infobox Gemeinde in Deutschland ist das sogar explizit so dokumentiert).
  • Eine präzise Definition der Semantik dieser Klasse in der deutschsprachigen Wikipedia fehlt bzw. die ehemals vorhandene präzise Semantik wurde – leider auch im und durch das Gadget – verwässert.
  • Die englische Wikipedia verwendet denselben Klassennamen schon seit Urzeiten mit einer anderen Bedeutung: Dort steht class="metadata" für Bereiche, die innerhalb des Artikels stehen, im Gegensatz zur deutschsprachigen Wikipedia nicht standardmäßig ausgeblendet sind, aber dennoch „nicht Teil des eigentlichen Artikelinhalts“ sein sollen und in „alternativen Artikelansichten“ ausgeblendet werden, beispielsweise beim Drucken (siehe en:Wikipedia:Catalogue of CSS classes#Classes). Darunter fallen zum Beispiel Wartungsbausteine wie en:Template:Refimprove.
  • Daraus resultieren mehr oder weniger überraschende Effekte, da international ausgerichtete Anwendungen tendenziell der englischen Wikipedia folgen. Beispielsweise ignoriert der MediaViewer Bilder in Bereichen mit class="metadata", weil er davon ausgeht, dass es sich bei Bildern in solchen Bereichen hochwahrscheinlich nur um schmückende Icons handelt (vgl. phab:rEMMV21549d754747681a2b50b8763996b7abf0f4efd5).

Saubere Lösung: Wegen der zahlreichen projektinternen und -externen Abhängigkeiten sehr schwierig. Finde und dokumentiere eine präzise Definition für die Semantik dieser Klasse (und eventuell auch einen anderen Namen, was einerseits unerwünschte Nebeneffekte beseitigen würde, andererseits aber auch potenziell erwünschte Nebeneffekte, von denen wir noch nichts wissen); stelle sicher, dass die Klasse nur für semantisch passende und technisch geeignete Zwecke verwendet wird, also insbesondere nur für solche, wo ein „versehentliches“ Sichtbarwerden der Inhalte unkritisch ist.

Geo-Mikroformat[Bearbeiten | Quelltext bearbeiten]

Intention: Maschinenlesbare Repräsentation von Geokoordinaten in der HTML-Seite.

Ist-Zustand: Per display:none ausgeblendetes <span>-Element, das „kryptische Zahlenkolonnen“ enthält, prinzipiell an allen möglichen Stellen stehen kann und im Fall von Textkoordinaten sogar mitten im Fließtext steht. Dokumentation unter Vorlage:CoordinateComplex#Mikroformat, Implementierung in Vorlage:CoordinateMain und Vorlage:CoordinateMap.

Probleme:

Saubere Lösung: Lies die Spezifikation des Mikroformats und implementiere es so, wie es gedacht ist: Nicht als unsichtbares Element, sondern in Attributen.

Wartungslinks[Bearbeiten | Quelltext bearbeiten]

Intention: Aufspüren von Vorlagenfehlern.

Ist-Zustand: Per display:none ausgeblendete Links auf inexistente Vorlagenunterseiten, die prinzipiell an allen möglichen Stellen stehen können und aufgrund alter Dokumentation meist in der Form <span style="display:none"> und ohne Linkbeschriftung realisiert sind (es kommen aber auch kryptische Texte und Interpunktionszeichen als Beschriftung vor). Nur spärliche Dokumentation unter Vorlage:Dokumentation/Wartungsseite, Wikipedia:WikiProjekt Vorlagen/Anleitung: Erstellen einer Infobox#Finden fehlender Zeilen und Wikipedia:WikiProjekt Vorlagen/Wartung, trotzdem ausgiebige Verwendung (siehe Kategorie:Vorlage:nur Wartung und Spezial:Gewünschte Seiten).

Probleme:

  • Sichtbare margin-Boxen von <p>-Elementen in Artikeln, weil MediaWiki darauf besteht, dass alle Kindelemente von #mw-content-text (also alle Elemente, die auf „oberster Ebene“ im Artikel stehen) Block-Level-Elemente sind und deshalb jedes <span> auf „oberster Ebene“ in ein <p> wrappt. Workaround: Bringe Wartungslinks in einem sowieso vorhandenen Block-Level-Element (<div>, Tabelle, …) unter oder verwende <div style="display:none"> für den Wartungslink (nicht möglich bei Vorlagen, die mitten im Fließtext stehen).
  • Die TextExtracts-Erweiterung interessiert sich nicht für display:none (phab:T119702). Workaround: Bringe Wartungslinks in einem geeigneten Element (<div>, Tabelle) unter oder verwende eine geeignete Klasse (siehe Quelltext der Erweiterung).
  • Die interne Suchfunktion interessiert sich nicht für display:none (Beispiel). Workaround: Verwende ein Leerzeichen als Linkbeschriftung.

Saubere Lösung: Umbau auf Wartungskategorien.