Note that there are some explanatory texts on larger screens.

plurals
  1. POReplacing H1 text with a logo image: best method for SEO and accessibility?
    primarykey
    data
    text
    <p>It seems like there are a few different techniques out there, so I was hoping to get a "definitive" answer on this...</p> <p>On a website, it's common practice to create a logo that links to the homepage. I want to do the same, while best optimizing for search engines, screen readers, IE 6+, and browsers who have disabled CSS and/or images.</p> <p><strong>Example One:</strong> Doesn't use an h1 tag. Not as good for SEO, right?</p> <pre><code>&lt;div id="logo"&gt; &lt;a href=""&gt; &lt;img src="logo.png" alt="Stack Overflow" /&gt; &lt;/a&gt; &lt;/div&gt; </code></pre> <p><strong>Example Two:</strong> Found this somewhere. The CSS seems a little hacky.</p> <pre><code>&lt;h1 id="logo"&gt; &lt;a href=""&gt;Stack Overflow&lt;/a&gt; &lt;/h1&gt; </code></pre> <pre class="lang-css prettyprint-override"><code>/* css */ #logo { padding: 70px 0 0 0; overflow: hidden; background-image: url("logo.png"); background-repeat: no-repeat; height: 0px !important; height /**/:70px; } </code></pre> <p><strong>Example Three:</strong> Same HTML, different approach using text-indent. This is the "Phark" approach to image replacement.</p> <pre><code>&lt;h1 id="logo"&gt; &lt;a href=""&gt;Stack Overflow&lt;/a&gt; &lt;/h1&gt; </code></pre> <pre class="lang-css prettyprint-override"><code>/* 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; } </code></pre> <p><strong>Example Four:</strong> <a href="http://alicious.com/2009/new-css-image-replacement-jir/" rel="noreferrer">The Leahy-Langridge-Jefferies method</a>. Displays when images and/or css is turned off.</p> <pre><code>&lt;h1 id="logo" class="logo"&gt; &lt;a href=""&gt;Stack Overflow&lt;/a&gt; &lt;/h1&gt; </code></pre> <pre class="lang-css prettyprint-override"><code>/* 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 */ } </code></pre> <p>What method is the best for this sort of thing? Please provide html and css in your answer.</p>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload