イントロダクション

最新バージョンの文書
http://purpr.in/common/guideline/css/
このバージョンの文書
http://purpr.in/common/guideline/css/index.html
前バージョンの文書
まだありません。

導入方法

基本は、ユーザ環境ガイドラインに沿って、どのバージョンの CSS を導入するかを決定します。ここでは、1998年5月に W3C より改訂公表された CSS2勧告[原文][邦訳]を基準としていますが、実際のターゲットブラウザのサポート状況および互換性を考慮して適宜 CSS1 のみの範囲内で記述します。

基本ルール

CSS の適用方法

  • 特別な事情がない限り、インラインでスタイルを書かず、すべて外部 CSS を適用させることを基本とします。
  • 見栄えを定義する visual.css を link 要素で、visual.css 内に他の CSS を@import 規則で読み込みます。

外部 CSS の読み込み手順

1枚の文書に1枚のCSSでも可能ですが、柔軟な利用方法を想定して役目ごとに分割させます。

ただし、Web アプリケーションのテンプレートなど、CSSを1枚にまとめる必要がある場合は、分岐させずひとまとめにして作成します(その場合、分けるべきだった箇所をコメントで区切ります)。Web アプリケーションに限らず、構築するサイトの規模によってはまとめて記述します。

分割した場合の CSS の種類

default.css
全ての文書に読み込ませる CSS。ブラウザごとに違うスタイルをリセットして要素別に見栄えを再定義します。汎用的なクラススタイルも含みます。
font.css
フォントファミリを定義するための CSS です。
layout.css
レイアウトの種類を定義するための CSS です。この CSS の中身で @import 規則を使い、個々のレイアウトを読み込みます。このファイル内では、読み込むファイル名の行のコメントを外して希望のレイアウトを読み込むようにします。
layout.css 内で @import 規則を使って読み込むスタイルの種類の例
  • fixed_2column_left_menu.css
  • fixed_2column_right_menu.css
  • liquid_2column_left_menu.css
  • liquid_2column_right_menu.css
microformats.css
microformats に対応したマークアップに応じて読み込む CSS です。
styles.css
レイアウト以外のビジュアル面を詳細に指定する CSS です。色、間隔、行頭アイコンや背景画像など多岐にわたります。
その他
styles.css の1枚では管理が難しいなどの大規模なサイトの場合は規模に応じて CSS の種類を増やすことができます。その場合、一番最後に読み込むべき詳細なスタイルを (X)HTML の link 要素を使って読み込みます。
分割された CSS の読み込み手順サンプル
<!-- (X)HTML 側では styles.css のみを link 属性で読み込みます。 -->
<link rel="stylesheet" href="http://purpr.in/common/stylesheets/styles.css" type="text/css" />
-----------------------------------------------------------------------------------------------------
/* styles.css の冒頭 */               ← 注)実際のファイルには冒頭のコメントはありません
@charset "utf-8";
@import url("default.css");          ↓ 最初は一般的なものから
@import url("font.css");             ↓ 下に進むほどに、より詳細な指定がされているスタイルを読み込みます。
@import url("layout.css");           ↓ layout.css はさらにレイアウト種類別に分岐しますが、読み込みたいレイアウトのコメントを外すことで
@import url("microformats.css");     ↓ 反映させたいレイアウトに調整します。
/* ↓styles.css の本体へ */            ↓ この例の場合、デザインの細かい指定がされているstyles.cssが一番最後に読み込まれます。

統合した場合の CSS の構成

/* 制作者情報 */
/* ブラウザ初期化スタイル */
/* 汎用要素スタイル */
/* 汎用クラススタイル */
/* 構造(ワイヤーフレーム)別スタイル */
/* カテゴリー別スタイル */

CSS の設置ディレクトリ

複数のファイルを読み込むことを想定し、専用のディレクトリ「stylesheets」をサイトドメインのルートディレクトリもしくは「common」ディレクトリの直下に設置します。

基本書式

インデント

タブによるインデントは行わず、全て半角スペースにより行います。タブをスペースに変換できるテキストエディタであれば、タブ1つでスペース4個分を確保するよう設定します。

制作者情報の書き方

用途や作者・バージョンがわかるように必要項目をコメント内に明示します。

/*
 * Style Name: CSSの名前
 * Style URI: CSSのURI
 * Description: CSSの用途の説明
 * Version: CSSのバージョン
 * Last Up Date: 最終更新日時
 * Author: CSSの作者
 * Author URI: CSSの作者 web サイト URI
 * Author Email: CSSの作者連絡先
 * Guideline URI: 準拠するガイドラインの URI
 */

コメントの書き方

セレクタを分類した場合に大きなまとまりがあるときに3行コメントを挿入して見出しらしく記述します。

/* ----------------------------------------
 * Universal selector
 * ---------------------------------------- */

部分的に注釈が必要な場合は1行コメントを挿入します。コメント開始'/*'の右隣およびコメント終了'*/'の左隣に半角スペースを入れます。

/* Comment */

セレクタ(選択子)のルール

セレクタに class および id の指定がある場合は、文書中のどの要素に係る class / id なのかを極力明示します。(CSS だけではどの要素につけられているのかが理解できず、都度 HTML を確認しなければならなくなるため)

ただし、どの要素にも適用させたい汎用 class の場合はこの限りではありません。

/* id が container の div 要素の例 */
div#container {
    width: 760px;
    }

/* class が section の div 要素の例 */
div.section {
    margin: 0 0 1.2em 0;
    }

/* class が err で、要素に関係なく適用したい場合の例 */
.err {
    color: #f00;
    }

プロパティのルール

インデントと改行

  1. 'セレクタ名' + '半角スペース1つ' + '{' + 改行
  2. プロパティの記述は、そのセレクタに対して半角スペース4つ分のインデント
  3. プロパティ直後のコロン':'の隣に半角スペース1つ
  4. 値が複数ある場合は半角スペース1つ区切り
  5. 値の終了にセミコロン';' + 改行
  6. 閉じ括弧'}'もプロパティのインデントを保持する
  7. セレクタ{プロパティ: 値;}のひとまとまりを記述したら1行空ける(ただし、コメント記述の直下は1行空けない)
.selector1 {
    property: value;
    property: value1 value2 value3 value4;
    }

.selector2 {
    property: value;
    property: value1 value2 value3 value4;
    }

HTML の包含関係と同様のインデント

レイアウトを定義するスタイルシート/デザインを定義するスタイルシートにおいては、例に示すように、HTML 内で要素の親子関係が存在した場合にインデントを行い、視覚的にメンテナンスをしやすくします。

ただし、デフォルトスタイルシートでは行いません。

/* Structure */
body {
    width: 100%;
    background-color: #000;
    }

    div#container {
        width: 85%;
        color: #000;
        background-color: #fff;
        }
        ...more

プロパティの記述順序

プロパティの出現する順番は、CSS2 仕様書に出現する順番に沿って記述しようと考えていますが、実際のところ試行錯誤の段階です。

テキストエディタのみの制作の方だけなら良いのですが、オーサリングツールを使っている方を考慮すると指定しづらいことを考慮すると参考程度として厳密に規定しないほうがよいのかもしれません。

ルール化しやすい順序の例
CSS2 仕様書出現順に記載した場合の順序アウトライン
selector {
    ボックスモデル Box model
    視覚フォーマットモデル Visual formatting model
    視覚フォーマットモデルの詳細 Visual formatting model details
    視覚効果 Visual effects
    生成内容、自動番号付け及びリスト Generated content, automatic numbering, and lists
    色及び背景 Colors and Backgrounds
    フォント Fonts
    テキスト Text
    表 Tables
    ユーザインターフェース User interface
    }
class="section" の div 要素に CSS2 仕様書出現順にプロパティを記述した例

まとめて記述できるプロパティはまとめてあります(例:font)。

div.section {
    margin: 0 0 15px 0;
    padding: 8px 10px;
    border: 1px solid #f00;       /* width > style > color */
    display: block;
    position: absolute;
    top :0;
    right: 0;
    bottom: 0;
    left: 0;
    float: none;
    clear: both;
    z-index: 1;
    width: 600px;
    min-width: 400px;
    max-width: 600px;
    height: 300px;
    min-height: 100px;
    max-height: 300px;
    line-height: 1.5;
    vertical-align: middle;
    overflow: auto;
    clip: auto;
    visibility: visible;
    list-style: disc outside;        /* type > position > image */
    color: #000;
    background: #fff url(/images/bg.png) repeat-y fixed top left;       /* color > image > repeat > attachment > position */
    font: normal normal normal 100%/1.5 "ヒラギノ角ゴ Pro W3", verdana, arial, sans-serif;        /* style > variant > weight > size/line-height > family */
    text-indent: 1em;
    text-align: left;
    text-decoration: none;
    letter-spacing: 0.1em;
    word-spacing: 0.1em;
    text-transform: lowercase;
    cursor: pointer;
    }

マルチデバイス対応

想定されるすべての環境に適合するスタイルシートを提供するのが理想ですが、あらかじめユーザ環境ガイドラインで定めたターゲットのメディアに対応します。

パソコンのディスプレイ向け(media="screen")
普及している解像度を考慮して作成します。アクセシビリティに配慮するならばフォントサイズの固定は望ましくありません。
プリンタ向け(media="print")
グレースケール印刷を前提にスタイルを決め、印刷に不要な要素(例えばフォームコントロール部品など)は隠すなど考慮して作成します。
携帯端末向け(media="handheld")
専用ページを用意するなど、各種携帯キャリアのサポート状況に応じて柔軟に対応します。

ハックのルール

トラブルシューティング