Hallo.
Prinzipiell ist dein Ansatz also nicht uninteressant und wurde auch schon diskutiert, aber es überwogen wohl stets die Gegenargumente.
mir ist klar, dass eine überschrift einen absatz erzeugen soll - für diese aufgabe ist aber das default-stylesheet zuständig
Ich meine nicht die Darstellung, sondern die Semantik.
wenn ich in meinem default-stylesheet "h1 { display: inline; }" reinpacke, bleibt h1 dennoch ein blockelement, welches halt als inline-element dargestellt wird
ich finde es von der seite her etwas unpraktisch, dass das aussehen quasi in der dtd festgelegt wird
Wahrscheinlich ginge es dir schon besser, wenn sich die Begriffe unterschieden. Denn wenn es bei display: block;
bliebe, aber <p>
kein Block-, sondern ein Box-Element wäre oder das Inline-Element <samp>
die Eigenschaft display: flow;
hätte, könnte man die in der DTD definierten Eigenschaften der Elemente nicht mehr mittels CSS verändern. Damit wäre zumindest die Logik vordefinierter Elementgruppen und der Beeinflussung ihrer Darstellung durch die display
-Eigenschaft voneinander getrennt.
was spricht gegen folgendes
<samp /> ist ein zustandsloses [1] element
<samp /> an einer beliebigen stelle ist im default-stylesheet per display: block; formatiert und erzeugt einen absatz
<samp /> als kind von <p />, <li /> oder sonstigen "klassischen" inline-elementen ist im default-stylesheet mit display: inline; formatiert
Dagegen spricht die Komplexität des Stylesheets. Denn wenn man deine -- an sich ja absolut nachvollziehbare -- Logik fortsetzt, stellt sich die Frage, was denn dann noch "klassische" Inline-Elemente sein sollen. Du stellst so doch letztlich jedes Element in die Abhängigkeit von seinem umgebenden Element. Oder du beschränkst das System auf eine Handvoll Elemente und schaffst so wieder Inkonsistenzen.
natürlich werden die default-stylesheets wesentlich komplexer, aber die komplexität verschwindet dafür an anderer stelle - einerseits durch einsparung von redundatem markup (2x das gleiche element, 1x als block und 1x inline) und andererseits in den vordefinierten eigeneschaften in den dtds
Aber immer das gleiche verhältnismäßig simple Stylesheet seriell auf alle möglichen Elemente eines Dokumentes anzuwenden, ist sehr viel einfacher und daher schneller als das Anwenden eines hochgradig komplexen Stylesheets auf ein nur geringfügig einfacheres Dokument. Sicher ist dieses Dokument dann semantisch sauberer oder enthält eine Handvoll umschließende Elemente weniger, aber das wiegt nach Ansicht der Verantwortlichen eben den Vorteil der einfacheren Verarbeitung bei weitem nicht auf. Aus dem gleichen Grund gibt es ja auch keine CSS-Selektoren für Elternelemente.
klein mäxchen stellt sich das so vor: es gibt nur noch inline-elemente die beliebige andere inline-elemente enthalten dürfen (mit einschränkungen, dass zb li nur ein kind von ul oder ol sein darf), die grundformatierung (ob absatzbildend oder nicht) wird übers default-stylesheet des browsers erledigt
Vegiss das Standard-Stylesheet besser. Wenn dort nicht für jedes einzelne Element in jeder erdenklichen Kombination sämtliche Eigenschaften bestimmt wird, wird es nicht zuverlässig funktionieren. Und die Hersteller zu einem gemeinsamen Standard zu bewegen, obwohl nicht einmal jeder von denen jede Eigenschaft für jedes Element unterstützt, ist utopisch.
bei tabellen hat das ja auch funktioniert - früher wurden tabellen vom browser ohne berücksichtigung von css mit einer eigenen routine dargestellt, jetzt ist dafür css verantwortlich - egal welche elemente mittels table, table-row und talbe-cell formatiert werden
Geschieht das tatsächlich? Vielleicht wird dort CSS überhaupt nur angewandt, wenn die Eigenschaften von denen in der DTD definierten abweichen -- auch wenn die DTD dazu nicht einmal ausgelesen wird. Ich weiß nicht, wie die einzelnen Browser das tatsächlich handhaben, aber du behauptest da etwas, von dem auch du vermutlich nicht mit Sicherheit sagen kannst, ob es überhaupt zutrifft.
MfG, at