Es scheint, als gäbe es ein paar verschiedene Techniken, also hatte ich gehofft, eine "endgültige" Antwort darauf zu bekommen ...
Auf einer Website ist es üblich, ein Logo zu erstellen, das auf die Homepage verweist. Ich möchte das Gleiche tun und gleichzeitig am besten für Suchmaschinen, Bildschirmleseprogramme, IE 6+ und Browser optimieren, die CSS und / oder Bilder deaktiviert haben.
Beispiel 1: Verwendet kein h1-Tag. Nicht so gut für SEO, oder?
<div id="logo">
<a href="">
<img src="logo.png" alt="Stack Overflow" />
</a>
</div>
Beispiel 2: Ich habe das irgendwo gefunden. Das CSS scheint ein wenig hacky.
<h1 id="logo">
<a href="">Stack Overflow</a>
</h1>
/* css */
#logo {
padding: 70px 0 0 0;
overflow: hidden;
background-image: url("logo.png");
background-repeat: no-repeat;
height: 0px !important;
height /**/:70px;
}
Beispiel 3: Gleiches HTML, anderer Ansatz mit Text-Einzug. Dies ist der "Phark" -Ansatz zum Ersetzen von Bildern.
<h1 id="logo">
<a href="">Stack Overflow</a>
</h1>
/* css */
#logo {
background: transparent url("logo.png") no-repeat scroll 0% 0%;
width: 250px;
height: 70px;
text-indent: -3333px;
border: 0;
margin: 0;
}
#logo a {
display: block;
width: 280px; /* larger than actual image? */
height: 120px;
text-decoration: none;
border: 0;
}
Beispiel 4: Die Leahy-Langridge-Jefferies-Methode . Wird angezeigt, wenn Bilder und / oder CSS deaktiviert sind.
<h1 id="logo" class="logo">
<a href="">Stack Overflow</a>
</h1>
/* css */
h1.logo {
margin-top: 15px; /* for this particular site, set this as you like */
position: relative; /* allows child element to be placed positioned wrt this one */
overflow:hidden; /* don’t let content leak beyond the header - not needed as height of anchor will cover whole header */
padding: 0; /* needed to counter the reset/default styles */
}
h1.logo a {
position: absolute; /* defaults to top:0, left:0 and so these can be left out */
height: 0; /* hiding text, prevent it peaking out */
width: 100%; /* 686px; fill the parent element */
background-position: left top;
background-repeat: no-repeat;
}
h1#logo {
height: 60px; /* height of replacement image */
}
h1#logo a {
padding-top: 60px; /* height of the replacement image */
background-image: url("logo.png"); /* the replacement image */
}
Welche Methode ist die beste für solche Dinge? Bitte geben Sie in Ihrer Antwort HTML und CSS an.
title
Attribut nicht in der sein<a>
?Antworten:
Ihnen fehlt die Option:
Titel in href und img zu h1 ist sehr, sehr wichtig!
quelle
Ich mache es meistens wie oben, aber aus Gründen der Barrierefreiheit muss ich die Möglichkeit unterstützen, dass Bilder im Browser deaktiviert werden. Anstatt den Text aus dem Link von der Seite einzurücken, decke ich ihn ab, indem ich ihn absolut
auf die volle Breite und Höhe des<span>
<a>
und mit positionierez-index
ihn in der Stapelreihenfolge über dem Linktext platziere.Der Preis ist eins leer
<span>
, aber ich bin bereit, ihn dort für etwas so Wichtiges wie einen zu haben<h1>
.quelle
Wenn Barrierefreiheitsgründe wichtig sind, verwenden Sie die erste Variante (wenn der Kunde ein Bild ohne Stile sehen möchte).
Keine Notwendigkeit, imaginäre SEO-Anforderungen zu erfüllen, da der obige HTML-Code die richtige Struktur hat und nur Sie entscheiden sollten, ob dies für Ihre Besucher geeignet ist.
Sie können die Variante auch mit weniger HTML-Code verwenden
Bitte beachten Sie, dass ich alle anderen CSS-Stile und Hacks entfernt habe, da sie nicht der Aufgabe entsprachen. Sie können nur in bestimmten Fällen nützlich sein.
quelle
display:none
ist nicht zugänglich.Hier etwas spät dran, konnte aber nicht widerstehen.
Ihre Frage ist halb fehlerhaft. Lassen Sie mich erklären:
Die erste Hälfte Ihrer Frage zum Ersetzen von Bildern ist eine gültige Frage, und meiner Meinung nach ist dies für ein Logo ein einfaches Bild. ein alt-Attribut; und CSS für seine Positionierung sind ausreichend.
Die zweite Hälfte Ihrer Frage zum "SEO-Wert" des ersten Halbjahres für ein Logo ist der falsche Ansatz, um zu entscheiden, welche Elemente für verschiedene Arten von Inhalten verwendet werden sollen.
Ein Logo ist keine primäre Überschrift oder gar keine Überschrift. Wenn Sie das Logo auf jeder Seite Ihrer Website mit dem H1-Element markieren, schadet dies Ihren Rankings (geringfügig) mehr als es nützt. Semantisch sind Überschriften (H1 - H6) genau dafür geeignet: Überschriften und Unterüberschriften für den Inhalt.
In HTML5 ist mehr als eine Überschrift pro Seite zulässig, aber ein Logo verdient keine davon. Ihr Logo, bei dem es sich möglicherweise um ein unscharfes grünes Widget und Text handelt, befindet sich aus einem bestimmten Grund in einem Bild neben der Kopfzeile. Es ist eine Art "Stempel" und kein hierarchisches Element zur Strukturierung Ihres Inhalts. Das erste (ob Sie mehr verwenden, hängt von Ihrer Überschriftenhierarchie ab) H1 jeder Seite Ihrer Website sollte den Betreff enthalten. Die Hauptüberschrift Ihrer Indexseite lautet möglicherweise "Die beste Quelle für unscharfe grüne Widgets in NYC". Die primäre Überschrift auf einer anderen Seite könnte "Versanddetails für unsere Fuzzy-Widgets" sein. Auf einer anderen Seite kann es sich um "Über Berts Fuzzy Widgets Inc." handeln. Du hast die Idee.
Randnotiz: So unglaublich es auch klingt, schauen Sie nicht in der Quelle der Google-eigenen Web-Eigenschaften nach Beispielen für korrektes Markup. Dies ist ein ganzer Beitrag für sich.
Um den größtmöglichen "SEO-Wert" für HTML und seine Elemente zu erzielen , werfen Sie einen Blick auf die HTML5-Spezifikationen und treffen Sie Markup-Entscheidungen auf der Grundlage der (HTML-) Semantik und des Werts für Benutzer vor Suchmaschinen. Sie haben dann einen besseren Erfolg mit Ihrem SEO.
quelle
Ich denke, Sie wären an der H1-Debatte interessiert . Es ist eine Debatte darüber, ob das h1-Element für den Titel der Seite oder für das Logo verwendet werden soll.
Persönlich würde ich Ihrem ersten Vorschlag folgen, etwas in dieser Richtung:
Dies hängt natürlich davon ab, ob Ihr Design Seitentitel verwendet, aber dies ist meine Haltung zu diesem Thema.
quelle
Dies war die gute Option für SEO, da SEO dem H1-Tag eine hohe Priorität einräumt. Innerhalb des h1-Tags sollte Ihr Site-Name stehen. Wenn Sie mit dieser Methode den Site-Namen in SEO suchen, wird auch Ihr Site-Logo angezeigt.
Wenn Sie den Site-Namen ODER den Text ausblenden möchten, verwenden Sie bitte den Text-Einzug im negativen Wert. Ex
quelle
Sie haben den Titel im
<a>
Element verpasst .Ich schlage vor, den Titel in das
<a>
Element einzufügen, da der Kunde wissen möchte, was dieses Bild bedeutet. Da Sie diestext-indent
für den Test festgelegt<h1>
haben, kann dieser Front-End-Benutzer Informationen zum Hauptlogo erhalten, während er über dem Logo schwebt.quelle
Wie macht W3C?
Schauen Sie sich einfach https://www.w3.org/ an . Das Bild hat eine
z-index:1
, der Text ist hier aber hinterher wegen der an diez-index:0
gekoppeltenposition: absolute;
Das ursprüngliche HTML:
Das ursprüngliche CSS:
quelle
Ein Punkt, den niemand angesprochen hat, ist die Tatsache, dass das h1-Attribut für jede Seite spezifisch sein sollte und die Verwendung des Site-Logos das H1 auf jeder Seite der Site effektiv repliziert.
Ich verwende gerne az index hidden h1 für jede Seite, da die beste SEO h1 oft nicht die beste für den Verkauf oder den ästhetischen Wert ist.
quelle
Eine neue (Keller) Methode soll die Geschwindigkeit gegenüber der -9999px-Methode verbessern:
hier empfohlen: http://www.zeldman.com/2012/03/01/replacing-the-9999px-hack-new-image-replacement/
quelle
Ich weiß es nicht, aber das ist das Format, das ich verwendet habe ...
Einfach und es hat meiner Seite keinen Schaden zugefügt, soweit ich sehen kann. Sie könnten es css, aber ich sehe es nicht schneller laden.
quelle
Aus SEO-Gründen:
quelle
Nachdem ich die obigen Lösungen gelesen hatte, verwendete ich eine CSS-Grid-Lösung.
quelle
quelle
quelle