無駄が増えるだけのなんちゃってCSSレイアウトで満足?

刹那の妥協も認めない! 完璧なホームページ制作を追求する!

ねこ又 ホームページ制作

レイアウト方法の歴史

始めは、 行と列の概念があるtable要素だと、 左右に分かれたレイアウトの実現が簡単ということで、 tableレイアウトが流行りました。

後に、tableはレイアウトをする要素ではなく、 表を作るもので、 本来の用途とは違うと言うことと、 柔軟性がないということで、 tableレイアウトがなくなり、 今度はCSSレイアウトが流行りました。

嘘のCSSレイアウト

CSSレイアウトは、 table要素を使わなければ良いというわけではありません。 table要素を使わないことが目的ではなく、 メンテナンス性やSEO効果を高めることが、 本来の目的です。

例えば、 以下のなんちゃってCSSレイアウトのソースを見て下さい。 <div class="table"> <div class="tr"> <div class="td"> 左メニュー </div> <div class="td"> 本文 </div> </div> </div> 分かりやすくclass属性を設定してみましたが、 このclass属性値が何であっても関係ないので、 構造を見てください。

またtr要素が1つしかないので、 以下のような、 なんちゃってCSSレイアウトのように、 省略する場合が多いです。

<div class="container"> <div class="menu"> 左メニュー </div> <div class="contents"> 本文 </div> </div> こちらのclass属性値は、 よく使われているものを当ててみました。

この例のなんちゃってCSSレイアウトのソースのように、 table要素を、ただdiv要素に変更しただけでは、 なにも変わってないのは分かりますよね。 ただ分かりにくくなっただけで、 これだと、まだtable要素を使った方が分かりやすい。

意味の無いCSSレイアウトをして、 費用の無駄遣いをしているだけです。

残念ながら今までのCSSレイアウトは、 こういう、 なんちゃってCSSレイアウトがほとんどでした。

なぜ今なのか?

HTML5が勧告される年と言うのが、 大きな理由になります。

HTML5では、多くの要素が追加されます。 この記事に関係あるものでは、 nav要素とarticle要素があります。

そう、 class=”menu”とclass=”contents”に相当するものです。 これにより、 <div><div><div><div>・・・ という分かりにくいCSSレイアウトにならなくなります。

もちろんこの外を、 div要素あるいは、別のブロック要素で囲んでしまうと、 tableレイアウトと同じになってしまい、 意味がなくなります。

また、HTML5と同時に、CSS3の登場により、 真CSSレイアウトがやり易くなったというのもあります。

真CSSレイアウト用の基本マークアップ例

このブログでも使っているマークアップになります。 <body> <header> ページのタイトルなど </header> <article> 記事などの本文 </article> <nav> メニュー </nav> <footer> コピーライトなど </footer> </body> メニューは、正しくnav要素を使用すれば、 メニューということに違いがないので、 articleの上でも問題有りません。 SEO的にも違いはありません。 nav要素ではなくdiv要素などを使えば、 答えは違ってきますので、 注意してください。

このホームページで下に書いている理由は、 ガラケーなど、CSSが使えない環境で 下に表示してほしいからです。

あとはCSSを使い、 自由にレイアウトしてください。 HTMLをいじらずに。