Moin!
Wenn man nicht sagt, wie man die Welt gerne hätte, wird sie niemals so werden, wie man sie gerne hätte.
Darum sags ich es ja.
Es gibt einen sehr guten Grund gegen deinen Vorschlag, <style> auch im Body zu erlauben:
CSS ist so gestrickt, dass User-Agenten zuerst das HTML laden können, dann das im Head verlinkte oder angegebene CSS (mit <style>, @import oder <link>), und danach in der Lage sind, alle während des Ladens von HTML noch hereinkommenden HTML-Elemente sofort anhand der CSS-Angaben zu rendern.
Würde innerhalb des BODY erlaubt sein, <style>-Bereiche zu definieren, würde damit eine Redefinition sämtlicher Styles möglich sein - und es wäre erforderlich, bei Auftreten eines solchen Bereichs das Rendering der gesamten Seite neu zu starten.
style-Attribute haben das Problem nicht. Sie gelten konkret nur für das jeweilige HTML-Element - und da der Attributwert im Starttag zur Verfügung steht, kann man das Rendern mit diesen Werten direkt beginnen.
Aus diesem Grund wurden auch viele erwünschte CSS-Selektoren nicht in CSS3 aufgenommen, die gegen dieses Prinzip verstoßen würden. Beispielsweise wird es in CSS3 noch immer nicht möglich sein, ein Element basierend auf den darin enthaltenen Elementen zu formatieren - weil man zum Zeitpunkt des Elementbeginns noch nicht weiß, welche Elemente darin enthalten sind.
Ich halte das allerdings für keine existentielle Einschränkung. Erstens ist CSS3 mit seinen diversen interessanten Neuerungen ohnehin noch ein Jahrzehnt entfernt, bevor es zuverlässig nutzbar in allen Browsern implementiert ist. Zweitens muß man auch jetzt schon sehr viele Workarounds über Klassen abbilden - was vernünftig funktioniert, lediglich beim Schreiben des Quelltextes zusätzlichen Aufwand bedeutet. Automatisierende Software erleichtert den Vorgang aber deutlich.
Wenn dein CMS dir Hindernisse in den Weg stellt, ist das nicht das Problem von HTML oder CSS.
- Sven Rautenberg
"Love your nation - respect the others."