Skip to content

Latest commit

 

History

History
354 lines (283 loc) · 12.5 KB

html.md

File metadata and controls

354 lines (283 loc) · 12.5 KB

HTML Styleguide

文書構造に関する HTML の決まり事。

目次

  1. メタルール
    1. エンコード
    2. コメント
    3. TODO コメント
  2. 書式ルール
    1. 一般的な書式
    2. インデントや改行箇所
    3. 大文字/小文字
  3. コーディングルール
    1. ドキュメントタイプ
    2. 基本的な構造
    3. ルート要素
    4. 外部リソースを読み込む際の type 属性
    5. role 属性
    6. セマンティックに書く
    7. インラインスタイル
    8. HTML 要素によるスタイリング
    9. マルチメディアの代替コンテンツ
    10. タグの省略をしない
    11. フォームの cols , rows 属性
    12. アウトライン
    13. HTML のバリデート
  4. [ オプション ] プリプロセッサ
  5. 参考文献

1. メタルール

エンコード

UTF-8 を使う。

<meta charset="utf-8">

コメント

<!-- start / { name } --> でコメント開始箇所、 <!-- end / { name } --> で終了箇所を書く。コメントを書く場合は必ず両方書こうね。
コメントの下はインデントをいれる必要はないよ。

<!-- start / header -->
<header>
  ...
</header>
<!-- end / header -->

他でコンポーネント化されているものなど、HTML だけではわかりにくいものにはコメントを書こう。必ず書けというわけではないよ。

<!-- start / header -->
{{include file="header.tpl"}}
<!-- end / header -->

<!-- start / estimate form -->
<%= form_for(@estimate, :html => {:class => 'basic-form', :multipart => true}) do |f| %>
  ...
<% end / %>
<!-- end / estimate form -->

TODO コメント

こんな感じ:

<!-- TODO: remove -->

2. 書式ルール

一般的な書式

  • インデントは半角スペース2つで行います
  • シングルクォーテーション ( ' ) ではなくダブルクォーテーション ( " ) を使います

インデントや改行箇所

ブロック要素・リスト要素・テーブル要素は改行してから記述し、これらの子要素にはインデントを入れる。

<div class="module">
  <p>paragraph</p>
</div>

<ul>
  <li>list item</li>
  <li>list item</li>
</ul>

<table>
  <tr>
    <th>table header</th>
    <td>table data</td>
  </tr>
</table>

インライン要素や <br> タグでは改行を挟まない。

<!-- NG -->
<p>てきすとてきすと
  <a href="">リンク</a>
  <br>
  てきすとてきすと</p>

<!-- OK -->
<p>てきすとてきすと<a href="">リンク</a>てきすとてきすと</p>

大文字/小文字

HTML の要素、ID やクラス名は小文字のみで行おう。
コメントには大文字を使ってもいいよ。

<!-- NG -->
<div class="LAYOUT"> ... </div>
<DIV CLASS="module"> ... </DIV>

<!-- OK -->
<div class="layout"> ... </div>
<div class="module"> ... </div>

<!-- start / RSS Feed -->
<div class="rss-feed"> ... </div>
<!-- end / RSS Feed -->

3. コーディングルール

ドキュメントタイプ

HTML5 でいこう。

<!DOCTYPE html>

基本的な構造

html 以下の head , body にもインデントを取ろう。
main 要素さん、こんにちは。

<!DOCTYPE html>
<html lang="ja">
 <head>
   <title> ... </title>
 </head>
 <body>
   <!-- start / header -->
   <header>
     ...
   </header>
   <!-- end / header -->
   
   <!-- start / main -->
   <main role="main">
     ...
   </main>
   <!-- end / main -->
   
   <!-- start / footer -->
   <footer>
     ...
   </footer>
   <!-- end / footer -->

   <!-- start / scripts -->
   <div class="scripts">
     ...
   </div>
   <!-- end / scripts -->

   <!-- start / analysis-code -->
   <div class="analysis-code">
     ...
   </div>
   <!-- end / analysis-code -->
 </body>
</html>

ルート要素

HTML ページではルート要素は <html> だよね。 このルート要素には言語コードを指定しておこう。

日本語の指定だとこうだ:

<html lang="ja">
  ...
</html>

外部リソースを読み込む際の type 属性

CSS と JavaScript の type 属性は省略する。HTML5 ではデフォルトの言語として解釈されるからね。

<!-- NG -->
<link rel="stylesheet" href="stylesheets/base/base.css" type="text/css">
<script src="javascripts/jquery.min.js" type="text/javascript"></script>

<!-- OK -->
<link rel="stylesheet" href="stylesheets/base/base.css">
<script src="javascripts/jquery.min.js"></script>

role 属性

HTML5 のセマンティクスを補うために role 属性を使ってそれぞれに役割を明確にしよう。

特に main 要素を使う場合は、ユーザーエージェントが要件とされる role マッピングを実装するまで role="main" を指定しよう。

<main role="main">
  ...
</main>

セマンティックに書く

見出しは <h1> ~ <h6> 要素、段落なら <p> 要素、順序付きリストなら <ol> 要素、コンテンツの意味に適した要素を使うようにしよう。

また、 <dl> で使う <dt><dd> のように要素同士が関係を持っているものがあるけど、これらの関係性を見えにくくするような HTML を組んではいけないよ。(バリデーションをかけたらすぐにエラーが返ってくると思うけど)

<!-- NG -->
<dl>
  <dt>Definition Term</dt>
  <span class="separation"></span>
  <dd>Definition Description</dd>
</dl>

<!-- OK -->
<dl>
  <dt>Definition Term</dt>
  <dd>Definition Description</dd>
</dl>

divspan を使う前に他に適した要素が本当に無いのか、以下のサイトなどで一度確認してみて。HTML5 になってから意味付けをする要素も増えたしね。

インラインスタイル

要素に当てる style 属性は使ってはいけない。 理由はスタイルの適用箇所が CSS ファイルと HTML ファイルにあったらどちらにあるか分かり難くなるから.. とか、まぁいろいろね:

<!-- NG -->
<p style="color: red">赤い文字</p>

HTML 要素によるスタイリング

スタイリング目的で要素を決めるのはもういい加減やめよう。

<center> といった書式方向を決める要素や、<font> といった見た目を変更するだけの要素は使ってはいけない。HTML5 では廃止予定になっていることが 1番の理由だけど、そもそも見た目を変更するために要素を選択するのは良くないからね。

それと <br> タグもスタイリング目的で使ってはいけないよ。以下のような使い方はよくないね。

  • 連続した <br>
  • スタイルを整えるための <br>

マルチメディアの代替コンテンツ

画像が表示されない場合、音声で読み上げられる場合を考えて <img> には alt 属性を指定しておこう。
alt に画像内の文章をすべて書けというわけではないけれど、「何の画像か?」というのが分かる程度には書こう。
写真やイラストだけの画像に alt をつける必要はないけどね。

<!-- NG -->
<img src="figure-tax-increase.png" alt="">

<!-- OK -->
<img src="figure-tax-increase.png" alt="2015年10月に消費税率を10%に引き上げる政府の大増税計画の推移">
<img src="picture-mainview.png" alt="">

タグの省略をしない

li, dt, dd, p, tr, th, td, rt, rp, optgroup, option, thread, tfoot で終了タグの省略は行わない。

フォームの cols , rows 属性

input 要素、 textarea 要素の幅・高さの指定を cols 属性や rows 属性では行わない。それぞれにクラスを振って widthhight プロパティの指定で行おう。

<!-- NG -->
<input type="text" colos="50" rows="10">
<textarea id="" name="" cols="30" rows="10"></textarea>

<!-- OK -->
<input type="text" class="input-kana">
<textarea id="" name="" class="textarea-note"></textarea>

アウトライン

アウトラインを綺麗に保って機械(検索エンジン)にページを正しく解釈してもらおう。
そのためにはアウトライン形成に関係する section 要素や h1 ~ h6 要素などを理解して適切に使うことが必要だね。
また、こういった要素には見た目に関する強いプロパティ( 余白や色 )を割り当ててしまうと "見た目上の問題" からアウトラインが崩れてしまうことがあるので気をつけよう。

「完璧!」と思っても上手くできていないことがあるよね。大枠のアウトラインができた時とコーディングの最後は必ずツールを使ってアウトラインを確認しよう。

HTML のバリデート

すべてが終わった時ではなくて、一部が完成したタイミング、もしくはあなたが書いているコードを常に監視して HTML コードの検証を行おう。コードが書き終わってから「Result: 27 Errors, 25 warning(s)」とか出るのが恐いからね。

Web での検証ツールは以下のものを使おう。

Error は基本的に 0 に、warnings は.. まぁできるだけ減そう。

4. [ オプション ] プリプロセッサ

Slim を使うよ。
面倒な山カッコ( < , > )を書かなくて済むからね。

5. 参考文献