2011年11月1日火曜日

CMSでHTML5とHTML4を共存させる方法


と言う事で、やり方は色々ありますが…

一番確実で手っ取り早いのは、DIVタグを使ったブロック要素でのレイアウトが無難でしょう。
ソースの見栄えは悪くなりますが、これが一番確実でしかもW3Cにも準拠した方法でしょうね。

そもそもHTML4は現行の?ブラウザーではIE8以前の物が殆どです。そのIE対策としてはブラウザーのユーザーエージェントでテンプレートを振り分けるという方法を以前ご紹介しました。(うちのサイトもそうしてます)が、IEだけの為にわざわざテンプレートを作るのはどうなのよ?そこまでの労力を掛ける必要があるの?

と言うのが正直なところです。

幸いな事に、IE8以前のブラウザーはHTML5の新しいタグやCSS3の新規に追加されたプロパティは無視されるので、昔のCSSハックではありませんが、そこを上手く利用させてもらいます。

製作方法は簡単です。
IE8でもHTML5のソースを読まない訳ではないので、基本のソースはHTML5&CSS3で製作します。
普通にHTML5とCSS3でガンガン書いてゆきます…が、CSSのクラス設定で、クラス名に特定のHTML5のタグを指定せずにあくまでDIVタグでレイアウト作業をします。

もちろんHTML4で使用されているタグに関しては、クラス指定をしても問題ありません。
問題になるタグは、HTML5から追加された新しいタグのみです。
新しいタグはIE8では無視されるタグなので、タグにクラス指定をしても無視されます。
ちなみに、タグに直接指定をしても、タグ内にクラス指定をしても、どちらも無視されるので、ご注意ください。

例:<section>に対して直接クラス指定をしても、<section class="●●●">としても結果は同じ。
HTML5で追加された<section>はIE8では無視されるので、全く意味をなさない。

一見、タグ内にクラス指定すれば、CSSが効きそうに思えますが、ブラウザーがタグを認識しない時点で、次のクラス指定は無意味なものになるので、無駄です。

こうなると、もう見栄え云々以前の問題として、まともに表示(レイアウト)されないのですから、仕方がありません。
DIVタグを使って、がっちり固めるしかありません。

別にW3CではDIVタグを認めていないわけではないので、現状ではこれが最も簡単にできる、HTML4&HTML5の表示対策になるでしょうね。
ソースはかなり煩雑になりますが、表示(レイアウト)されないよりははるかにマシ。という事で。


神奈川県を中心として主に横浜・川崎・東京23区西部の中小企業・個人事業主向けホームページを制作しております。 横浜本田WEB


横浜本田WEB Facebookページ
http://www.facebook.com/hondaweb?fref=ts

  • このエントリーをはてなブックマークに追加


Facebookへ投稿