====== コーディング規約 ======
Revizeは下記のコーディング規約に基づいて制作されています。Revizeをベースにしたテーマ、Revizeに対応したプラグインを制作するには同様のコーディング規約に倣う必要があります。
===== HTML =====
==== 準拠規格 ====
*[[http://www.w3.org/TR/html401/|HTML 4.01 Specification]]
*[[http://www.w3.org/TR/2000/REC-xhtml1-20000126/|XHTML 1.0: The Extensible HyperText Markup Language]](XHTML化機能の有効時)
文書型にはTrasitionalを採用します。
XHTML化機能へ対応するためには、変換後にXHTML 1.0 Transitionalの基準を満たすHTMLを記述する必要があります。
==== サイト名とメインブロック ====
原則として、サイト名と記事などを含むメインブロックは、[[http://www.w3.org/TR/xhtml2/|XHTML 2.0]]の[[http://www.w3.org/TR/xhtml2/mod-structural.html#sec_8.8.|section要素]]に倣い、下記の構造に基づいてマークアップします。
-h1(サイト名)
-div.section(メインブロック全体 - レベル1)
-h2.title(メインブロックのタイトル - レベル1)
-div.text(メインブロックの内容 - レベル1)
-div.section(メインブロック全体 - レベル2)
-h3.title(メインブロックのタイトル - レベル2)
-div.text(メインブロックの内容 - レベル2)
-div.section(メインブロック全体 - レベル3)
-h4.title(メインブロックのタイトル - レベル3)
-div.text(メインブロックの内容 - レベル3)
-div.section(メインブロック全体 - レベル4)
-h5.title(メインブロックのタイトル - レベル4)
-div.text(メインブロックの内容 - レベル4)
-div.section(メインブロック全体 - レベル5)
-h6.title(メインブロックのタイトル - レベル5)
-div.text(メインブロックの内容 - レベル5)
メインブロックのタイトル - レベル1
(メインブロックの内容 - レベル1)
メインブロックのタイトル - レベル1
(メインブロックの内容 - レベル1)
メインブロックのタイトル - レベル2
(メインブロックの内容 - レベル2)
Heading(見出し)要素はサイト名とメインブロックのタイトル以外では使用しません。
クラス名が複数ある場合は、CSS2のセレクタに未対応のユーザーエージェント(IE等)にも配慮するため、「section」以外のそれぞれのクラス名を「-」(ハイフン)でつなげたクラス名も指定します。また、子要素は、必要に応じて、親要素のクラス名の一部と子要素のクラス名を「-」(ハイフン)でつなげたクラス名も指定します。
==== サブブロック ====
原則として、左右ブロックなどを含むサブブロックは、1つのブロックごとに下記の構造に基づいてマークアップします。
-dl.utility(ブロック全体)
-dt.title(ブロックのタイトル)
-dd.text(ブロックの内容)
- ブロックタイトル - ブロック1
- ブロックの内容 - ブロック1
- ブロックタイトル - ブロック2
- ブロックの内容 - ブロック2
==== ナビゲーション ====
原則として、ページナビゲーションなどを含むナビゲーションは、1つのナビゲーションごとに下記の構造に基づいてマークアップします。
-ul(ナビゲーション全体)
-li.first(最初のナビゲーション)
-a
-li(通常のナビゲーション)
-a
-li.current(選択中のナビゲーション)
-strong
-li.last(最後のナビゲーション)
-a
クラス名が複数ある場合は、CSS2のセレクタに未対応のユーザーエージェント(IE等)にも配慮するため、それぞれのクラス名を「-」(ハイフン)でつなげたクラス名も指定します。
==== フォーム ====
原則として、全てのフォームは下記の構造に基づいてマークアップします。
-form#Form(フォーム全体)
-fieldset(フォームの内容)
-legend(フィールド名)
-dl.field(入力フィールド全体)
-dt(ラベル)
-label
-dd(入力フィールド)
-input,textarea等
-ul.submit(hiddenフィールドと送信ボタン)
あるいは
-form#Form(フォーム全体)
-fieldset(フォームの内容)
-legend(フィールド名)
-dl.field(入力フィールド全体)
-dt(ラベル)
-label
-dd(入力フィールド)
-input,textarea等
-fieldset(フォームの内容)
-legend(フィールド名)
-dl.field(入力フィールド全体)
-dt(ラベル)
-label
-dd(入力フィールド)
-input,textarea等
-ul.submit(hiddenフィールドと送信ボタン)