仕事上いろんなHTMLを扱うが、一番いやなケースがテーブルレイアウトされたHTML。
特にtdタグの中にtableタグを入れ子し、さらにtdとspacer.gifで隣の要素のマージンを調整しているケースは最悪だ。
この手の手法は、テーブルレイアウトが主流だった(今も使っている人もいると思うが)数年前では当たり前だった。
タグにwidth属性やheight属性を記述しており、CSSは色や線など装飾程度にしか使っていないという考えのサイト。
XHTMLの場合は、完全にCSSを外部化した上で、要素にidやclassを振るので、個人的にはメンテナンスもしやすいと考えている。
テーブルレイアウトはtableタグがたくさんでてくるので、どれがページ全体のフレームになっているのかわかりにくい。
そこで私が普段気をつけているHTML、CSS、JavaScriptのコーディング方法を紹介する。
参考にしたもの
私の恩師の方法を参考にしている。
ドキュメントルート、またはサイトのルートとなるディレクトリに、commonsourceというディレクトリを作って、その中にさらに、css、images、js、scriptsというようにディレクトリを分け、それぞれのディレクトリにそれぞれのファイルを入れる。
ディレクトリの定義は以下の通り。
恩師の場合はcommonsourceとしているが私はcommonとしている。commonはほかのプログラムでも使われる可能性があるので、避けたほうがいいかもしれない。
こうしている理由はいくつかあるが、大きくはPHPなどのプログラムがモジュールやライブラリと多くディレクトリを分ける可能性があるため。実際、CMSではそのようなことがあるのでこれにしているし、このほうがすっきりします。
これは最近のウェブサイトでは必須だろう。サーバー環境などやむをえない場合を除いてHTML、CSS、JavaScriptはUTF-8で保存する。
PHPを使う場合なども同じ。
理由はいくつかあるがJavaScriptの処理体系がUTF-8になっているため、Ajaxの戻り値もUTF-8になる。
またHTMLがXHTML互換のため、先頭に<?xml encoding="utf-8" version="1.0"?>とつけなくてはならなかったことなども理由のひとつ。
概ねのこれらの値を設定するときは、単語の区切りを_(アンダーバー)にすることが多いように見受けられる。
私の場合以下のような規則でつけている。
CSSだとたとえば以下のような書き方ができる。
div.content #wrapper {・・・}
div.article #wrapper {・・・}
CSS的にはこれらは性格に位置を特定できるが、JavaScriptではこれは使えないので、id="wrapper"がそのHTMLの中で1回しか出てこないようにコーディングする。
これはつまり、CSSのidに対するスタイルにタグ名を平気しなくて良くなる。
冗長的な書き方の例 div#wrapper 推奨される書き方の例 #wrapper
HTMLの意味的にはテーブルは表組みで何らかの一覧がそこに存在していると思われる。
そうでない使い方はしないことだ。ただフォーム関係など、CSSがとっても面倒くさくなるケースはあると思うので、良識の範囲内で使う。
またidやclass、name属性につける値は読んで意味のわかるものにしておこう。
のちのメンテナンスがしやすくなる。
ページのデザインやレイアウトのことではなくHTMLのコードの記述の仕方である。
HTML中のテキストの体裁はどうでもいいので、私は長文をぶち込む際も見栄えの改行位置でHTML中は改行しない。つまり「~でした。<br />しかし、~」と書く。
この場合、長文テキストなので、いくつかの段落に分かれているだろうから、pタグを使って段落を囲み、HTML中のpタグは1行で書く。
詳しくは私のコードを見てもらえばいいだろう。
それから、インライン要素(プレーンテキストを含む)はブロックレベルのタグで囲み、その前後にむだなタブやスペースはつけない。そういったものはブロックレベルタグの前後つけて、HTML自体の入れ子構造がわかりやすいようにコーディングしていく。
高級言語Javaには以下のような習慣上の決まりがある。守らなくてもいいのだが、これらにしたがって記述することによって効率を図るということだ。
JavaScriptに定数という概念はないので、定数として扱った気でいよう。
JavaScriptにビルトインされている関数や定数、変数もすべてこの形式に従っている。特に理由のないときはこの形式にする。