質問: 毎度初歩的な質問で失礼します。 タイトルの通り、divとsectionとarticleの違いってなんでしょうか? いろいろググりましたが、とても曖昧にしか理解できずにいます。 divの中にsectionとarticleがある。 sectionは前後関係を必要とする要素で articleは独自に成立する要素。 とざっくりそんな風に理解しています。 コードを書くときは ``` ... ``` または ``` ... ``` のどちらかを要素の種類によって使い分けたらいいのかな?と今のところ認識しています。 基本的なことから教えていただけるとありがたく思います。
回答: 仕事や日常的にWebを触っている訳ではないので、資料上の話になりますが、divは特には意味を持たない区切り/区分/かたまりで、使う人が意味や使い方を自由に設定できるもの。section,articleは文書の要素として意味を持たせてあり、推奨される使い方があります。 昔はsection,articleといったものが無かったので、何でもdivで囲んでいたようですが、今は新しい定義が増えてだいぶ時間も経過しているので、それらの意味のある要素に合う内容についてまでdivは使わない方が良いようです。 特に質問記事のようにarticle,sectionとほぼ同じ区切りで単に二重に囲んだだけに見える方法では。 @su3158さん回答のように複数の要素をまとめて扱うとか、あるいは1つの要素の中の特定の部分だけを特別に扱いたい(けれど相応しいタグが無い)とかの場合に使うのだと思われます。 MDNのdivの項目にこんな記述があります。 : コンテンツ分割要素 > > 使用上の注意 > > ``要素は、他に適切な意味的要素(``や``など)がない場合に限り使用してください。 > > > このdivのページの冒頭の定義は以下になります。 > > HTML の コンテンツ分割要素 (``) は、フローコンテンツの汎用コンテナーです。 CSS を用いてスタイル付けがされるまでは、コンテンツやレイアウトには影響を与えません。 > > > ``要素は「純粋」なコンテナーとして、本質的には何も表しません。その代わり、`class`や`id`を使用してスタイル付けしやすくしたり、文書内で異なる言語で書かれた部分を (`lang`属性を使用して) 示したりするために使用します。 > > > articleやsectionの記事はこちら。 : 記事コンテンツ要素 > > HTML の``要素は文書、ページ、アプリケーション、サイトなどの中で自己完結しており、 (集合したものの中で) 個別に配信や再利用を行うことを意図した構成物を表します。例えば、フォーラムの投稿、雑誌や新聞の記事、ブログの記事などが含まれます。 > > > ある文書に複数の記事を含めることができます。たとえば、読者がスクロールするたびに各記事のテキストを次々と表示するブログでは、各記事は``要素に含まれ、おそらくその中に1つ以上の``があります。 > > > : 汎用セクション要素 > > HTML の``要素は、 HTML 文書の中で単独のセクション (区間) を表します。セクションを表現するより意味的に具体的な要素がない場合に使用します。必ずではありませんが、通常はセクションには見出しがあります。 > > > 例えば、ナビゲーションメニューは``要素で表しますが、検索結果の一覧や地図の表示やコントロールには具体的な要素がないので、``の中に入れることができます。 > > > 他にはこんな記事が参考になるのでは? 【HTML5入門】どのサイトでも使われている!ページ構造を作る7つのタグ