Over the past few days, I’ve gotten a few complaints about S5 breaking in one browser or another—IE6 and Safari got the most mentions, but there were others. As an example, there was a report that the slide show would just stop working after a certain number of slides. In every case I’ve seen so far, these problems have been caused by invalid XHTML.
The most common validation problem I expect people to run into is with the structuring of lists. For example, suppose you want two levels of lists on a slide. You do it like this:
<ul> <li>point one</li> <li>point two <ul> <li>subpoint one</li> <li>subpoint two</li> </ul> </li> <li>point three</li> <li>point four</li> </ul>
Notice how the nested list is inside the
li element? That’s correct. You should never put nested lists between list items on the ‘outer’ list, even though a lot of people have made that a habit. The only element that can be a child of a
ul (or an
ol) element is an
li. That’s it. Anything that needs to be ‘nested’ goes inside one of the list items.
Alternatively, you can put structures after the list, if that’s what you want. As an example:
<ul> <li>point one</li> <li>point two</li> <li>point three</li> </ul> <pre> ...code sample... </pre>
Nothing wrong with that, as long as you keep the side content inside the
<div class="slide">...</div> element. Or you could put your
pre inside the last list item. It’s really up to you.
Remember that S5 stands for “simple standards-based slide show system”. That’s not just marketing: the CSS and scripts pretty much depend on valid markup structures. If the markup is invalid, it will very likely lead to confusion and unexpected results. In other words, violate the standards and they’ll violate your slide show. There’s a certain poetic symmetry in that, I think.
(And yes, I do know that as of posting, this entry doesn’t validate. Believe me, the irony is not at all lost on me. This happened because I haven’t gotten around to fixing WordPress so it strips HTML before inserting the entry title into the
title element. I ranted about the problem a while back… and it will eventually get fixed. Possibly when I upgrade to the next version of WP.)