Erstens, von der HTML 4.01 Spezifikation Abschnitt 7.5 .2 :
id = Name
Dieses Attribut weist einem Element einen Namen zu. Dieser Name muss in einem Dokument eindeutig sein.
class = cdata-Liste
Dieses Attribut weist einem Element einen Klassennamen oder eine Gruppe von Klassennamen zu. Eine beliebige Anzahl von Elementen kann denselben Klassennamen oder dieselben Klassen zugewiesen werden. Mehrere Klassennamen müssen durch Leerzeichen getrennt sein.
Ich verstehe, dass der Sinn Ihrer Frage darin besteht, dass Sie durch absichtliche Auswahl eindeutiger Klassennamen die Funktionalität, die von ID-Attributen gegeben wird, simulieren können, wodurch das Attribut id möglicherweise überflüssig wird. Nun, ich kann mir zumindest eine Sache vorstellen, die man nur mit mit IDs machen kann; Verknüpfen eines <label>
-Elements mit einem Formularelement mithilfe des Attributs for
. zB:
Dies ist eine gute Vorgehensweise aus Gründen der Barrierefreiheit. Wenn Sie <label for="id">
mit Checkbox- oder Radio-Button-Elementen verwenden, erhalten Sie den zusätzlichen Bonus, dass die Labels anklickbar sind. zB:
Das DOM existiert nicht nur für Styling-Elemente - Elemente können auch manipuliert werden (typischerweise über Javascript), und die Auswahl von Elementen nach ID ist in der Regel viel effizienter als die Auswahl nach Klassen.
Dieser tizag Artikel könnte es besser erklären. In jedem Standard in HTML haben class
und id
unterschiedliche Funktionen. Zum Beispiel wird ein id
(normalerweise) nur einmal verwendet, um ein eindeutiges Element zu bezeichnen. class
wird (wieder normalerweise) verwendet, um eine Gruppe von Elementen zu definieren.
Alles, was Sie mit IDs tun können, können Sie mit Klassen tun.
Eigentlich nicht. Wenn Sie einem Element eine ID geben, kann dies das Ziel eines Links sein (zB http://www.example.com/page#foo
bringt Sie zum Element mit id="foo"
auf page
; dies wird jetzt gegenüber dem alten <a name="foo">
-Mechanismus bevorzugt.)
Warum gibt es dann ein ID-Attribut?
Weil sie ganz anderen Zwecken dienen. Das obige Beispiel ist nur eine der unzähligen Anwendungen, auf die eine eindeutige ID für den Inhalt einer Seite gesetzt werden kann. Ein eindeutiger Bezeichner ist wichtig für Beziehungen zwischen Dingen.
Ja, die ID ist eindeutig, aber eine Klasse kann auch einzigartig sein ...
Kann sein sein. Wenn ich dem Browser mit dem Element "foo" id
aufrufe, sobald er dieses Element gefunden hat, kann es aufhören zu suchen. Wenn ich sage, dass ich Elemente mit der Klasse "bar" möchte, muss es das gesamte DOM durchsuchen, um sie zu finden.
Von Ссылка :
Das ID-Attribut hat mehrere Rollen in HTML:
Als Stylesheet-Selektor.
Als Zielanker für Hypertext-Links.
Als Mittel zum Verweis auf ein bestimmtes Element aus einem Skript.
Als Name eines deklarierten OBJECT-Elements.
Für die allgemeine Verarbeitung durch Benutzeragenten (z. B. zum Identifizieren von Feldern beim Extrahieren von Daten aus HTML-Seiten in eine Datenbank, Übersetzen von HTML-Dokumenten in andere Formate usw.).
Das Klassenattribut hingegen weist einem Element einen oder mehrere Klassennamen zu; Man kann sagen, dass das Element zu diesen Klassen gehört. Ein Klassenname kann von mehreren Elemeinstanzen gemeinsam genutzt werden. Das Klassenattribut hat mehrere Rollen in HTML:
Als Stylesheet-Selektor (wenn ein Autor Stilinformationen einer Gruppe von Elementen zuweisen möchte).
Für die allgemeine Verarbeitung durch Benutzeragenten.
Ich kann keinen Hinweis darauf finden, wann das class
-Attribut zur HTML-Spezifikation hinzugefügt wurde, aber ich kann aus eigener Erfahrung sagen, dass ich das id
-Attribut viel weiter zurückbekommen habe (besonders für die Formularverarbeitung) ).