[html5] How to mark up FAQ
Jukka K. Korpela
jukka.k.korpela at kolumbus.fi
Mon Mar 17 14:48:18 PDT 2014
2014-03-17 18:30, Gordon Baker wrote:
> Hi, I'm wondering what's the current best practice for marking up an FAQ.
There is no specific practice, and none is really needed. The important
question is why you are using markup and what you expect from it. This
isn't really about pleasing some gods of HTML but about your needs and
goals.
> There seem to be 3 main alternatives:
>
> <h1>Question</h1>
> <p>Answer</p>
> <h1>Question</h1>
> <p>Answer</p>
This is not satisfactory on several grounds. You would be using several
1st level headings. How would you mark the real 1st level heading then,
the page heading? If it's h1, too, then search engines would not know
which h1 is the real one. And the default (non-CSS) rendering would be
bad, with huge font size.
This would also restrict answers to single paragraphs.
Moreover, there would be no container for the FAQ as a whole, the list.
This would make styling and scripting inconvenient. You could wrap it
all in a <div> element.
> <dl>
> <dt>Question</dt>
> <dd>Answer</dd>
> <dt>Question</dt>
> <dd>Answer</dd>
> ...
> </dl>
>
This makes the FAQ as a whole a single element and lets you to style it
conveniently. The default rendering would not be very good, but perhaps
acceptable. Search engines probablydon't give <dt> much relative weight,
but normally you would want the questions to be emphasized more than the
answers.
If you need to group consecutive questions and answers e.g. for styling,
you can't, in this model. A <dl> element does not allow such grouping.
> <details>
> <summary>Question</summary>
> <p>Answer</p>
> </details>
> <details>
> <summary>Question</summary>
> <p>Answer</p>
> </details>
> ...
Rather contrived, but possible. Browser support can be a problem, and I
don't mean just old browsers that simply ignore <details> and <summary>
tags but also issues in quality of implementations of this relatively
new constructs. Most importantly, this would be relevant if a particular
kind of user interface is what you want.
To mention yet another approach, you could use a two-column table, with
questions in one column, answers in another. The data is structurally
tabular, but this is not a place for a table for practical reasons: in
almost all cases, tabular (grid) presentation is not suitable, and there
is not much tangible benefit from using <table> here.
In a typical case, the best approach might be something like this:
<div class=faq>
<h2 id=abc>Question abc</h2>
Answer to question abc. Use p markup if you have some use for it, typically
when answers are longer than one paragraph.
<h2 id=def>Question def</h2>
...
</div>
The id attributes are there to allow direct linking to specific
questions from other pages. They are also useful if you set up a table
of content, of course.
--
Yucca, http://www.cs.tut.fi/~jkorpela/
More information about the Help
mailing list