Reputation: 281
The website I am working on uses an image defined in CSS as the main logo. The HTML code looks like this:
<h1>example.com | The best something ever</h1>
I would like to display just the image defined in CSS and pass the information from the H1 tag to the search enginges only.
What's the correct way to do this? Google is very strict about this, I know that display:none
is wrong, what about visibility: hidden
?
Upvotes: 27
Views: 84510
Reputation: 126
Some frameworks (e.g. Bootstrap, TailwindCSS) will use visually-hidden
or sr-only
class or mixing to have element available to screen readers only.
Example:
.sr-only {
position: absolute;
width: 1px;
height: 1px;
padding: 0;
margin: -1px;
overflow: hidden;
clip: rect(0, 0, 0, 0);
white-space: nowrap;
border-width: 0;
}
Upvotes: -1
Reputation:
I think that visibility: hidden;
would work fine. Have you tried it yet?
Upvotes: 0
Reputation: 413
You're not going to get good SEO results if you, first hide the <h1>
, and second use generic phrases inside the <h1>
.
Don't just use the <h1>
for sizing, you can use classes to style.
<h1>
tags should contain keyword rich information such as:
Automotive Repair
Automotive repair being the keyword that relates to the particular page I'm theoretically working on.
Hope that makes sense.
Upvotes: 3
Reputation: 25
<h1 style="font-size: 2px; margin: 0px;">Something goes here</h1>
Works like a charm.... ;-) The screen readers will interpret it and won't affect your SEO.
Upvotes: 0
Reputation: 739
A full article in this matter is explained here https://www.paciellogroup.com/blog/2012/05/html5-accessibility-chops-hidden-and-aria-hidden/ So , when i work i use this code to support screen reader as well as hide some h1's and use pictures instead of it like (logo)
.offscreen{
position: absolute;
clip: rect(1px 1px 1px 1px); /* for Internet Explorer */
clip: rect(1px, 1px, 1px, 1px);
padding: 0;
border: 0;
height: 1px;
width: 1px;
overflow: hidden;
}
to find more follow the link
Upvotes: 0
Reputation: 120344
You should be fine with visibility: hidden
.
That said, if your image is part of the content (and I would dare to say that a company logo is content, not presentation), and you care about accessible html, you should consider changing your code to include the image as a img
element with title
and alt
ernate text, instead of a css background-image
.
Additionally, if you hope to attract search engines to the keywords inside the <h1>
element, you might want to include those words more than once in the page. The page title is a much more relevant place than the h1
element, for example.
Upvotes: 26
Reputation: 264
Resizing the block would work:
h1 {
overflow: hidden;
width: 1px;
height: 1px;
}
Upvotes: -1
Reputation: 15993
The easiest, foolproof, best for SEO solution would be
<h1><img src=logo.png alt="Something.com | The best something ever"></h1>
Upvotes: 26
Reputation: 700562
Does your web site consist of just one single page?
Otherwise you should put the headline of each page in the h1
tag, not the tagline of the site. Repeating the same headline on every page would make it pretty much useless.
Upvotes: 0
Reputation: 15634
The "correct" way to do this is to have the text in the title bar or in your page's meta text.
Upvotes: 3
Reputation: 738
set the image as the background of your h1 (set the width/height so it fits) then set your text-indent to something crazy like -9999px. That way when css is disabled (such as being crawled) the bot will see the text in the header instead of the background.
example:
CSS
#myHeader {
width:200px;
height:50px;
background: url('lcoation/of/the/image.jpg') top left no-repeat;
text-indent:-9999px;
}
HTML
<body>
...
<h1 id='myHeader'>HELLO WORLD</h1>
...
</body>
Upvotes: 2