tags:

views:

338

answers:

4

are multi-level CSS drop-down menus a big 'no-no' for SEO purposes.

i've read mixed reviews. some say the links in the secondary navigation will not be crawled by search-engine spiders (because they're hidden) while the other say it is part of the HTML, so the spider will 'see' it.

any thoughts? thanks

A: 

IMHO will be seen. The search engines can not run all the javascript to figure out whether something MAY become visible during normal operations.

TomTom
@TomTom oh yes they can. I am pretty sure they are doing some serious "browser simulating" in the background to find out what is actually visible to the user and what is not. I agree with that they probably will be seen, though.
Pekka
I can imagine Google doing some simulation - but they aren't the only search engine!
Sohnee
@Sohnee Google are certainly the best equipped, but rendering a target page and calculating a certain area's visibility is not that hard to implement even by a smaller company IMO.
Pekka
No, they do not. I know some sites that show you basically NO content when you come.... only a hugh login screen. Experts-exchange anyone? Ranks high, craps out on content when you do not log in.
TomTom
+2  A: 

As long as Google doesn't publish their indexing methods, we will never know for sure. But I very much doubt spiders will ignore links because they are in hidden elements. Text and keywords, yes. But links? No. In my experience, all bots are greedy to index as much of the internet as they can.

If you want to make really sure, consider having a second menu that is never hidden, and that shows the current page's "neighbor" links. Maybe have all the links of the current category as small links in the footer. That way, you can be sure every link will be visible on some page that is reachable from a level-1 link from another page.

Actually, I think I have seen sites doing that even though they had drop-down menus. Maybe that's the reason.

Pekka
That's also my experience. No worries.
BalusC
+1  A: 

Your best bet is to...

1) As the page loads, have everything visible on the page.

2) When the page is loaded, use your script to hide the bits you don't want to display as standard

This then gives you the best of both worlds. The spider will index all the links (and they are all visible) and users get a funky menu.

The reason people say that hidden text isn't indexed has its history in key-word spamming. People would add invisible elements on their pages stuffed with keywords (or have blue text on a blue background with keywords) and this is considered to be search index spamming, which counts against you in some search engines. There is a chance that your hidden menu will be interpreted as index spamming, so the hidden items may not be crawled.

Sohnee
-1, So do you think Google will happily let me keyword-spam if I hide my keywords with Javascript? Search engines penalize sites that do keyword-spamming, not sites that follow web standards. Don't use bad coding practices just because you *think* it *might* help your ranking.
mercator
@mercator - I think you've mis-read my answer, or my answer isn't clear. I said that the reason people think that hidden text isn't indexed is because of key word spamming?! Also, not hiding the menu until JavaScript fires is GOOD coding practice, not BAD coding practice - it's called "Progressive Enhancement" and aids users on devices that don't support JavaScript.
Sohnee
@Sohnee - Thanks for your reply! The thing is, the question is about a CSS menu. You're adding JavaScript where there wasn't any before. So there's no progressive enhancement in this case, because people on devices without JS, but with CSS support will now see the full menu, even though the CSS would be perfectly capable of taking care of this. And that only because of the unfounded fear that search engines might not be indexing text hidden by CSS.
mercator
@mercator - good point about the JS.
Sohnee
A: 

I've made sites using a drop down menu and they got spidered perfectly fine. As long as the links are in the HTML output (e.g. as an ordinary list) then the links will be seen.

DisgruntledGoat