270 votes

Remplacer le texte H1 par une image de logo : meilleure méthode pour le référencement et l'accessibilité ?

Il semble qu'il existe plusieurs techniques différentes, alors j'espérais obtenir une réponse "définitive" à ce sujet...

Sur un site web, il est courant de créer un logo qui renvoie à la page d'accueil. Je veux faire la même chose, tout en optimisant au mieux les moteurs de recherche, les lecteurs d'écran, IE 6+ et les navigateurs qui ont désactivé les CSS et/ou les images.

Premier exemple : N'utilise pas de balise h1. C'est moins bon pour le référencement, non ?

<div id="logo">
    <a href="">
        <img src="logo.png" alt="Stack Overflow" />
    </a>
</div>

Deuxième exemple : J'ai trouvé ça quelque part. La CSS semble un peu bancale.

<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;
}

Troisième exemple : Même HTML, approche différente en utilisant l'indentation du texte. C'est l'approche "Phark" du remplacement des images.

<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;
}

Exemple quatre : La méthode Leahy-Langridge-Jefferies . S'affiche lorsque les images et/ou les css sont désactivées.

<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 */
}

Quelle est la meilleure méthode pour ce genre de choses ? Veuillez fournir html et css dans votre réponse.

0 votes

Vous devriez vérifier ce sujet pour : stackoverflow.com/questions/1874895/

15 votes

Matt Cutts répondant à cette question. youtu.be/fBLvn_WkDJ4

2 votes

N'est-ce pas le title doit se trouver dans l'attribut <a> ?

0voto

Shoban Points 18742

Je pense que l'exemple 1 est plus que suffisant car le texte alt sera affiché si les images sont désactivées. Cela aidera également les moteurs de recherche à connaître votre site.

Mise à jour : On dirait que j'avais tort. Vérifiez ceci article .

0voto

Taswiz Points 11

Je ne sais pas, mais c'est le format que j'ai utilisé...

<h1>
    <span id="site-logo" title="xxx" href="#" target="_self">
        <img src="http://www.xxx.com/images/xxx.png" alt="xxx" width="xxx" height="xxx" />
        <a style="display:none">
            <strong>xxx</strong>
        </a>
    </span>
</h1>

C'est simple et, pour autant que je sache, cela n'a pas nui à mon site. Vous pouvez le csser mais je ne vois pas comment il se charge plus rapidement.

0voto

c_sea Points 145

Une nouvelle méthode (Keller) est censée améliorer la vitesse par rapport à la méthode -9999px :

.hide-text {
text-indent: 100%;
white-space: nowrap;
overflow: hidden;
}

recommandé ici : http://www.zeldman.com/2012/03/01/replacing-the-9999px-hack-new-image-replacement/

0voto

Potky Points 11

Pour des raisons de référencement :

<div itemscope itemtype="https://schema.org/Organization">
 <p id="logo"><a href="http://stackoverflow.com/"><span itemprop="Brand">Your business</span> <span class="icon fa-stg"></span> - <span itemprop="makesOffer">sell staff</span></a></p>
 </div>
   <h1>Your awesome title</h1>

-1voto

Daniel Boundy Points 1
<div class="logo">
    <h1><a href="index.html"><span>Insert Website Name</span></a></h1>
    <p>Insert Slogan Here</p>
</div>

#header .logo h1 {
    background: red; /* replace with image of logo */
    display:block;
    height:40px; /* image height */
    width:220px; /* image width */
}

#header .logo h1 a {
    display:block;
    height:40px; /* image height */
    width:220px; /* image width */
}

#header .logo h1 a span {
    display:none;
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X