最近、HTMLの学習を始めました。
仕様書などを読んだりして、
HTMLの事がなんとなくわかってきたところです。

ところが最近、
学習しているうちに、ふと疑問がわいてきました。

body直下の子要素は必ずリストになると思うのですがどうでしょう?

文章を適切な要素でマークアップしていき、
#header、#navigation、#contentといった感じでdiv要素を用いて論理的な段落として一纏めにしていくというのが一般的かと思います。

これらの纏まりはUnordered List、
つまり<ul>でマークアップされるべきだと思うのですがいかがでしょうか??とすると、必然的にどのHTMLもbody直下の子要素はリストになるのではないかと・・

いろいろ調べてみましたが、明確な解を得られなかったので質問しました。宜しくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (4件)

おそらく同じ考えの元に <ul> でマークアップしようとした事があります。



私は <ul> がどうかということよりも、"id" の付け方に注目しました。
id の意味によっては <ul> でマークアップしても良いからです。

過去に「私はheaderやfooterはidじゃなくてclassだと思うけど、皆さんはどう思います?」と問題提起されたことがありました。

CSS Nite公式ブログ:CSS Nite Vol.18フォトギャラリー(二次会)
http://web.archive.org/web/20080118075356/http:/ …
class属性とid属性に関する議論リンク集 - 徒委記
http://www.akatsukinishisu.net/wiki.cgi?class%C2 …

idは固有名、classは分類名です。
ここで言わんとしていることは、ヘッダは様々なものを含むのだから分類名が正しいんじゃない?、ということだと思います。
そう捉えると、class="header" が別々の場所に点在しても問題ないわけです。

私は「ページ制作者が考えた論理構造が正しい」と結論しました。
idは一意な識別子ですが、ページが違えば同じidが存在できます。
これはページ制作者の命名規則を優先する、とHTMLを規格した人が前提を置いているためだと思います。
であるならば、id, class の付け方(論理構造の構築)もページ制作者に一任されるのが自然だ、と考えました。
ちょっと強引な考え方かもしれませんが、

<div id='header'></div>



<header></header>

を定義するようなものだと思います。
id, class はページ制作者が論理構造を定義する場合において、適切な要素がなかったときに拡張するようなものではないでしょうか。
ここで <header> がページに一つしか存在できない固有名として定義する(<head> のように)かは、ページ制作者に一任されていると思います。

何が言いたいのかというと、zaq-zaqさんが #header、#navigation、#content をリスト構造と捉えたのならば、それは論理的に正しいということです。
zaq-zaqさんが id や class で論理構造を作るのです。それでいいと私は思います。

# 最後に。結局、私は <ul id='header'> でマークアップしませんでした。
# 「CSSを無効化すると "・" が表示される」「階層が深くなると、テキストエディタで読みづらい」が理由です。
    • good
    • 0

既に2人の方が回答された通りですが、ご質問者様の主張は



「文書に論理的なまとまりが複数ある場合、それらのまとまりは必ずリストとして扱われなければならない」

という風に聞こえます。「まとまり」は単なる集合にとどまらず必ず「リスト」になるべし、というのはいささか乱暴ではありませんか?

しかし、body以下の構造をもっとセマンティックに表現できるようにすべし、という方向性はHTML 5 で議論されているようです。section, nav, header, footerなどの要素が想定されています。

参考URL:http://dev.w3.org/html5/spec/Overview.html#secti …
    • good
    • 0

>body直下の子要素は必ずリストになると思うのですがどうでしょう?



なぜそう思うのか、質問文は拝見しましたがあまり理解できませんでした。

質問の内容を下記のように理解して回答します。

・html文章は、題目(#header)、メニュー(#navigation)、本文(#content)に大別されるべきと考えている。
・これらは<div>タグでそれぞれ纏めることが一般的と考える。すなわち、
<body>
 <div>題目(#header)</div>
 <div>メニュー(#navigation)</div>
 <div>本文(#content)</div>
</body>
となるはずである。
・ならば<ul>を用いて、
<body>
 <ul>
  <li>題目(#header)</li>
  <li>メニュー(#navigation)</li>
  <li>本文(#content)</li>
 </ul>
</body>
となるべきではないか?

ということで良いでしょうか?

確かにWebサイトというのは、題目(#header)、メニュー(#navigation)、本文(#content)に大別されていることが一般的ですが、
それは概念的な話であり、これら3つをリストで並べることが最適と言えるわけではありません。
<body>タグのあとに<table>タグを置いてhtml全体を整形する人もいるでしょうし、
フレームを使ってメニュー(#navigation)を分ける人もいます。

<body>タグ内は、表示したい内容を記述するタグであり、
その配下は必ずしも<ul>になるということは無いと思います。
(むしろ<body>配下に<ul>を使う人は稀ではないでしょうか)
    • good
    • 0

> 文章を適切な要素でマークアップしていき、


 #header、#navigation、#contentといった感じでdiv要素を用いて
 論理的な段落として一纏めにしていくというのが一般的かと思います。
#・・すなわちid、CSSにおいては一意セレクタは論理とは無関係です。
 HTMLにおける論理的な構造(段落ではない)は、bodyの直下には、ブロック要素のみが存在するといこと
【引用】____________ここから
<!ELEMENT BODY O O (%block;|SCRIPT)+ +(INS|DEL) -- document body -->
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ここまで[HTML4.01仕様書邦訳( http://www.asahi-net.or.jp/%7Esd5a-ucd/rec-html4 … )]より

 また、#header、#navigation、#contentというのもまったく一般的といえるものではありません。

> これらの纏まりはUnordered List、つまり<ul>でマークアップされるべきだと思うのですがいかがでしょうか??
 ulは、あくまで箇条書き--リスト--であることをマークアップするためのもので、箇条書きでないものをリストとしてマークアップされることはありません。してはならない。

 そのかわり、ナビゲーションリストは基本的にリストですから
<ul class="NavigationList" id="breadcrumbs">
  <li><a href=""></a></li>
  <li><a href=""></a></li>
</ul>
 などとマークアップすることはあるでしょう。HTML5やXHTML2あたりでは、<nl>という要素が追加されるでしょうね。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


人気Q&Aランキング