Ist es richtig, das Alt-Tag für einen Ankerlink zu verwenden?

124

Ist es richtig, das Alt-Tag für einen Ankerlink zu verwenden?

<a href="#" class="test" alt="Something" src="sfasfs" ></a>
user2067736
quelle

Antworten:

130

Solche Dinge lassen sich am besten anhand der offiziellen Spezifikation beantworten:

  1. Gehen Sie zur Spezifikation: https://www.w3.org/TR/html5/

  2. Suche nach " aElement": https://www.w3.org/TR/html5/text-level-semantics.html#the-a-element

  3. Aktivieren Sie "Inhaltsattribute", in dem alle zulässigen Attribute für das aElement aufgelistet sind :

    • Globale Attribute
    • href
    • target
    • download
    • rel
    • hreflang
    • type
  4. Überprüfen Sie die verknüpften "globalen Attribute": https://www.w3.org/TR/html5/dom.html#global-attributes

Wie Sie sehen werden, ist das altAttribut für das aElement nicht zulässig .
Außerdem würden Sie feststellen, dass das srcAttribut ebenfalls nicht zulässig ist.

Durch die Validierung Ihres HTML- Codes werden Ihnen solche Fehler gemeldet.


Beachten Sie, dass dies für HTML5 gilt , den HTML-Standard von W3C aus dem Jahr 2014 . Im Jahr 2016 wurde HTML 5.1 zum nächsten HTML-Standard . Das Finden der zulässigen Attribute funktioniert auf die gleiche Weise. Sie werden sehen, dass das aElement in HTML 5.1 ein anderes Attribut haben kann : rev.

Sie finden alle HTML-Spezifikationen (einschließlich des neuesten Standards) im aktuellen HTML-Status von W3C .

unor
quelle
2
Ich sehe das titleAttribut nicht in den aglobalen Attributen. Ist es richtig, ein solches titleAttribut in den zu verwenden aoder nicht?
Yousef Altaf
1
@YousefAltaf: Auf welcher Seite siehst du? Das verknüpfte, globale Attribute , listet auf title.
Unor
Ich habe es so erhalten, dass es unter den globalen Attributen aufgeführt ist. Aber wirkt es sich auf die Seitenqualität aus, wenn ich es verwende oder nicht?
Yousef Altaf
@YousefAltaf: Das ist eine andere Frage, die hier besser nicht diskutiert werden sollte. Siehe seine Definition . Wenn Sie noch Fragen dazu haben, können Sie eine separate Frage erstellen (aber besser vorher suchen, wenn diese noch nicht gestellt wurde).
Unor
4
Antwort mit Lesezeichen versehen als "So suchen Sie nach HTML-Attributen". Vielen Dank.
Codebling
59

Für Anker sollten Sie stattdessen title verwenden. alt ist nicht gültig atribute von a. Siehe http://w3schools.com/tags/tag_a.asp

Tom ist
quelle
@ FabioPoloni Danke, ich habe erwartet, dass jeder Link unten auf der Seite finden kann :-)
Tomis
Ich dachte, wenn jemand nicht viel über dieses Thema weiß, würde er es nicht finden ;-)
Fabio Poloni
8
Diese Information ist zufällig bei w3schools korrekt, aber w3schools ist nicht offiziell und nicht zuverlässig, siehe w3fools.com
Jukka K. Korpela
thx Guys ... abgesehen davon beruhte mein Bedarf ausschließlich auf Barrierefreiheitsstandards sowie auf der Negation des Leistungsaufwands. Ich habe ein Spirte-Bild verwendet, wollte gleichzeitig alt-Attribut geben, was mit Hintergrundbildern nicht möglich war. Stattdessen habe ich eine Problemumgehung, die geholfen hat ..
user2067736
1
"title" ist übrigens nicht mehr auf w3schools. Sie können jedoch den Titel verwenden, da es sich um ein globales Attribut handelt: w3.org/TR/html5/dom.html#global-attributes
rosell.dk
28

"title" ist in Browsern weit verbreitet. Versuchen:

<a href="#" title="hello">asf</a>
Pablo Pazos
quelle
3
So sollte eine Antwort anstelle der obigen 10-Minuten-Antwort aussehen. Aber diese Antwort sollte auch den Link haben: w3schools.com/tags/att_global_title.asp
mikael1000
Ich bin damit einverstanden, dass das oben Gesagte die Frage nicht beantwortet, jedoch gemäß titleder HTML5-Spezifikation falsch ist (obwohl die meisten Browser sie implementieren werden).
felwithe
6

Nein, ein altAttribut (es wäre ein Attribut, kein Tag) ist für ein aElement in einer HTML-Spezifikation oder einem HTML-Entwurf nicht zulässig . Und es scheint auch von keinem Browser als bedeutungsvoll erkannt zu werden.

Es ist ein bisschen rätselhaft, warum die Leute versuchen, es zu verwenden, aber die wahrscheinliche Erklärung ist, dass sie dies analog zum altAttribut für imgElemente tun und erwarten, dass beim Mouseover ein „Tooltip“ angezeigt wird. Daran sind zwei Dinge falsch. Erstens hat jedes Element eigene Attribute, die in den Spezifikationen für jedes Element definiert sind. Zweitens altist / war das „Tooltip“ -Rendering von Attributen in einigen alten Browsern eher eine Eigenart oder sogar ein Fehler als etwas, das zu erwarten war. Das altAttribut soll dem Benutzer genau dann angezeigt werden, wenn das Bild selbst aus irgendeinem Grund nicht angezeigt wird.

Um einen "Tooltip" zu erstellen, verwenden Sie titlestattdessen das Attribut oder, viel besser, Google für "CSS-Tooltips" und verwenden Sie CSS-basierte Tooltips Ihrer Wahl (sie können als versteckte "Ebenen" charakterisiert werden, die beim Mouseover sichtbar werden).

Jukka K. Korpela
quelle
Wie verwende ich Links, die programmgesteuert mithilfe von CSS-basierten Tooltips erstellt wurden?
Salvador Valencia
6

Sie sollten das title-Attribut für Ankertags verwenden, wenn Sie beschreibende Informationen ähnlich wie für ein alt-Attribut anwenden möchten. Das title-Attribut ist für Ankertags gültig und dient keinem anderen Zweck als der Bereitstellung von Informationen über die verknüpfte Seite.

W3C empfiehlt, dass der Wert des title-Attributs mit dem Wert des Titels des verknüpften Dokuments übereinstimmt, dies ist jedoch nicht obligatorisch.

http://www.w3.org/MarkUp/1995-archive/Elements/A.html


Alternativ und wahrscheinlich vorteilhafter können Sie das ARIA-Eingabehilfenattribut verwenden aria-label(nicht zu verwechseln mit aria-labeledby). aria-labelhat die gleiche Funktion wie das alt-Attribut für Bilder, jedoch für Nicht-Bildelemente, und enthält ein gewisses Maß an Optimierung, da Sie für Bildschirmleser optimieren.

http://www.w3.org/WAI/GL/wiki/Using_aria-label_to_provide_labels_for_objects


Wenn Sie ein Ankertag beschreiben möchten, ist es normalerweise angebracht, das rel- oder rev-Tag zu verwenden, aber Sie sind auf bestimmte Werte beschränkt. Sie sollten nicht für lesbare Beschreibungen verwendet werden.

Rel dient dazu, die Beziehung der verknüpften Seite zur aktuellen Seite zu beschreiben. (zB wenn die verlinkte Seite als nächstes in einer logischen Reihe ist, wäre es rel = next)

Das rev-Attribut ist im Wesentlichen die umgekehrte Beziehung des rel-Attributs. Rev. beschreibt die Beziehung der aktuellen Seite zur verknüpften Seite.

Eine Liste der gültigen Werte finden Sie hier: http://microformats.org/wiki/existing-rel-values

Davidcondrey
quelle
5

Ich habe Titel verwendet und es hat funktioniert!

Das title-Attribut gibt den Titel des Links an. Mit einer Ausnahme ist es rein beratend. Der Wert ist Text. Die Ausnahme bilden Stylesheet-Links, bei denen das title-Attribut alternative Stylesheet-Sätze definiert.

<a class="navbar-brand" href="http://www.alberghierocastelnuovocilento.gov.it/sito/index.php" title="sito dell'Istituto Ancel Keys">A.K.</a>
Giovanni G. PY
quelle
1

Ich bin überrascht zu sehen, dass alle Antworten, die besagen, dass die Verwendung von altAttributen im aTag ungültig ist . Das ist absolut falsch.

HTML blockiert Sie nicht mit irgendwelchen Attributen:

<a your-custom-attribute="value">Any attribute can be used</a>

Wenn Sie fragen, ob es semantisch korrekt ist, ein altAttribut zu verwenden , awerde ich sagen:

NEIN. Es wird verwendet, um die Bildbeschreibung festzulegen <img alt="image description" />.

Es kommt darauf an, was Sie mit den Attributen machen würden. Hier ist ein Beispiel:

a::after {
  content: attr(color); /* attr can be used as content */
  display: block;
  color: white;
  background-color: blue;
  background-color: attr(color); /* This won't work */
  display: none;
}
a:hover::after {
  display: block;
}
[hidden] {
  display: none;
}
<a href="#" color="red">Hover me!</a>
<a href="#" color="red" hidden>In some cases, it can be used to hide it!</a>

Wenn Sie erneut fragen, ob die Verwendung eines benutzerdefinierten Attributs semantisch korrekt ist, sage ich:

Verwenden Sie data-*Attribute für die semantische Verwendung.


Hoppla, die Frage wurde 2013 gestellt.

Bhojendra Rauniyar
quelle