845 Stimmen

Soll ich HTML-Anker mit "name" oder "id" erstellen?

Wenn man sich auf einen Teil einer Webseite mit dem " http://example.com/#foo " Methode, sollte man die

<h1><a name="foo"/>Foo Title</h1>

o

<h1 id="foo">Foo Title</h1>

Beide funktionieren, aber sind sie gleichwertig, oder gibt es semantische Unterschiede?

2 Stimmen

Der Link sollte eigentlich lauten http://example.com#foo (also ohne das / vor #)

87 Stimmen

Eigentlich, http://example.com#foo y http://example.com/#foo sind gleichwertig, wie in einem der RFCs über URIs definiert.

1 Stimmen

Bitte überprüfen Sie diese Antwort: stackoverflow.com/a/69869066/2457251

2voto

Cerebrus Punkte 25410

Im zweiten Beispiel wird dem betreffenden Element eine eindeutige ID zugewiesen. Dieses Element kann dann mit DHTML manipuliert oder aufgerufen werden.

Die erste Option hingegen legt eine bestimmte Stelle im Dokument fest, ähnlich wie ein Lesezeichen. In Verbindung mit einem "Anker" ist dies absolut sinnvoll.

2voto

jerseyboy Punkte 1242

Nur eine Bemerkung zum Markup Das Markup-Formular in früheren Versionen von HTML bot einen Ankerpunkt. Die Auszeichnungsformulare in HTML5, die das id-Attribut verwenden, sind zwar größtenteils gleichwertig, erfordern aber ein Element zur Identifizierung, von dem normalerweise erwartet wird, dass es Inhalte enthält.

Man könnte zum Beispiel ein leeres span oder div verwenden, aber diese Verwendung sieht und riecht degeneriert.

Ein Gedanke ist, das Element wbr für diesen Zweck zu verwenden. Das wbr-Element hat ein leeres Inhaltsmodell und erklärt lediglich, dass ein Zeilenumbruch möglich ist. Dies ist zwar immer noch eine etwas grundlose Verwendung eines Markup-Tags, aber viel weniger als grundlose Dokumententeilungen oder leere Textabschnitte.

0 Stimmen

Das ist ein gutes Argument. Mehr Informationen über wbr : w3.org/TR/html-markup/wbr.html Verwenden Sie <wbr id="foo" /> statt <a name="foo"></a>

1voto

Umesh Bagalur Punkte 311

Wie wäre es mit der Verwendung des Attributs name für alte Browser und des Attributs id für die neuen Browser? Beide Optionen werden verwendet und die Fallback-Methode wird standardmäßig implementiert!!!

0voto

Morfidon Punkte 1199

Im Moment geht es nicht um die Unterstützung, denn wer würde sich im Jahr 2021 um ältere Browser als IE6 kümmern?

Beachten Sie, dass Stackoverflow immer noch Anker und das Attribut "Name" anstelle des Attributs "Name" verwendet.

Warum?

Weil Sie:

  1. kann nicht zwei Werte für id auf SINGLE Element haben.

    sample

    { color: red; }

    <div id="postNr4245 sample"> Sample text </div> <!-- coloring doesn't work -->

    <a href="#postNr4245">Jump to Post</a> <!-- jumping doesn't work -->

Ok, man kann sagen, man kann "Klasse" für solche Dinge verwenden.

Es ist wahr pero wenn es nur einzeln Element, das auf Ihrer Website gestylt werden muss, sollten Sie keine Klasse verwenden.

Warum?

Denn wenn Sie den CSS-Selektor #idName verwenden und der Webbrowser dieses Element findet, dann wird nicht sehen Sie weiter. Es beschleunigt das Laden Ihrer Website.

Wenn Sie .class verwenden, muss er jede Stelle in Ihrem DOM suchen, da der Webbrowser nicht weiß, ob Sie .class einmal oder mehrmals verwendet haben.

  1. Sie können nicht starten ' id Wert mit Nummer, wenn Sie ihn in CSS gestalten oder JS zum Parsen verwenden möchten. Sie können jedoch mit ' Name Wert mit Nummer.

-3voto

Alex Fort Punkte 17757

Das gesamte Konzept des "benannten Ankers" verwendet per Definition das Attribut name. Sie sollten nur mit dem Namen bleiben, aber die ID-Attribut könnte für einige Javascript-Situationen praktisch sein.

Wie in den Kommentaren erwähnt, können Sie immer beides verwenden, um sich abzusichern.

0 Stimmen

Wenn ich beides verwende, sind die id:s und die Namen global eindeutig, d. h. kann ich dieselbe Zeichenfolge sowohl für die id als auch für den Namen verwenden?

0 Stimmen

Das kann man, aber manche Leute halten das für eine schlechte Praxis.

10 Stimmen

Nach der HTML-Spezifikation sollten name und id identisch sein, wenn beide vorhanden sind. Sie besagt auch, dass name und ids im gleichen Namensraum liegen. Der HTML-Validierungsdienst prüft dies nicht, und ich bezweifle, dass die Browser sich darum kümmern, aber sie scheinen trotzdem gute Richtlinien zu sein, die man befolgen sollte.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X