This may be the simplest question ever, but try as I might I simply couldn’t figure it out. I’m working on a website right now and I wish to use as few <div> elements as possible to keep the HTML pretty and easy to edit. At the moment I essentially have:
<html doctype etc etc>
<head>
<title and meta tags>
</head>
<body>
<div id="wrapper">
<div id="header"></div>
<div id="body"></div>
<div id="sidebar"></div>
<div id="footer"></div>
</div>
</body>
</html>
Very simple and elegant, yes? However the client wants their header to consist of a single large image which contains their company name and logo. So my options were pretty clear – either use an <img> tag, or set the background-image property on the header <div>. However then I got to thinking about SEO. For Google’s sake it would be nice if the header <div> contained an <h1> element with her website’s title, but then this element would have to be hidden so that human users only see the background image.
Although if you were to use the display:none; css property then the entire <div> disappears, including the background. Is there a good way to hide the contents of a <div> without hiding the <div> itself?
Have you tried to apply the hide on the H1 itself?
Your style would be:
#header h1{display:none;visibility:hidden;}UPDATE
Apparently, we’re both just having one of those days. If you want to make the H1 truly SEO/Screen reader friendly, it would be better to do this with your CSS:
This way your text is actually there on the page and rendered, it’s just kind of off screen.