Viele HTML-Element-Attribute, die nur zur Formatierung bestimmt waren (etwa
align,
bgcolor), existieren in neuen HTML-Standards nicht mehr. Ihre Funktionalität wurde von CSS übernommen (
text-align,
background-color).
Viel mehr gibt es dazu nicht zu sagen. Semantik („Das hier ist eine Überschrift, das hier ist ein Absatz.“) ist Sache von HTML, Formatierung („Überschriften sind rot und 30px hoch, Absätze haben anderthalbfachen Zeilenabstand und stehen im Blocksatz.) ist Sache von CSS.
Wenn der Unterschied zwischen Semantik und Formatierung (oder Inhalt und Design) klar ist, beantworten sich die meisten solcher Fragen von allein.
Eine Liste der in der neuesten Version von HTML verfügbaren Attribute gibt es hier:
-
Index — HTML5
Es gibt gewisse Randfälle wie das
width-Attribut, das für diese Elemente zulässig ist:
canvas;
embed;
iframe;
img;
input;
object;
video.
Auch die würde ich im Normalfall nicht verwenden, sondern in CSS auslagern. Ich habe mehreren Theorien, warum das Attribut für diese Elemente noch zulässig ist, möchte das aber nicht ausführen.
colspan und
rowspan sind zudem im Grunde semantische Attribute („Diese Zelle bildet den gemeinsamen Wert der Zeile für die folgenden drei Spalten.“). Das wäre eine wichtige Information für eine Anwendung, die die Tabelle ausliest. Eine Formatierungsangabe („Diese Zelle soll sich über drei Spalten erstrecken.“) ist inhaltlich nicht verwertbar. Eine auslesende Anwendung könnte da nur denken: „Aha, hier ist eine Zelle, die aus irgendeinem Grund breiter ist. Dahinter fehlen dann allerdings zwei Zellen.“
Der Einsatz von
style ist grundsätzlich legitim, führt aber häufig zu Redundanz.
HTML:
<h2 style="color: red; font-size: 30px;">Überschrift 1</h2>
<h2 style="color: red; font-size: 30px;">Überschrift 2</h2>
Einfacher zu warten ist:
HTML:
<h2>Überschrift 1</h2>
<h2>Überschrift 2</h2>
Code:
h2 { color: red; font-size: 30px; }
Dann noch schnell ein Wort zu den Attributen
class und
id. Die dürfen im Rahmen von CSS natürlich eingesetzt werden, wobei
class die produktivere Wahl ist und
id meiner Meinung nach tendenziell nur für solche Elemente gesetzt werden sollte, die per Fragment-Identifier im URL direkt angesprungen werden können sollen ([noparse]http://www.example.org/test.php#meine-id[/noparse]). Letzteres ist aber keine grundsätzliche Regel.