スタイルシートのコンポーネント要素 〜ネーミングとCSS 3 Attribute Selectors〜

前回からの続きです。よく使うコンポーネントを構成する要素 一覧の例をあげてみました。今回は、つくったクラスのネーミングについて考えてみたいと思います。

どのようなネーミングがいいのか

理想は、「文書中でどのような役割を持つのか」が一番です。しかし、ネーミングを考えるのは難しいのでそのあたりは少しずつかんがえていくといいでしょう。現実的に、「同じ内容なのに、クラス名だけ違う」のでは、コンポーネントの名前としては「分かりにくい」ので受け入れられないかもしれません。

ネーミングと CSS 3 Attribute Selectors

意外とネーミングを考えるときにキーになるのが「CSS 3 Attribute Selectors」です。
例えば、E[foo*="bar"] の指定を行い、foo 属性値が部分文字列 bar を含んでいる E 要素にマッチするようなクラス指定をおこなえる、というのがすごく便利なんですよ。ソース管理はすごく楽になります。

たとえば、[class*="Instructions"] と指定すると、「Instructions」という文字を含んだクラスすべてに適用される指定をおこなうことができます。いくつ、「Instructions」というクラスがあっても1行で済むんです。

これに限らず、コンポーネントを構成するときのネーミングを考えるときには、CSS 3 のセレクタに関する情報を勉強してから考えるのをおすすめします。

そういえば、「カニの貴公子」さん(笑)が、こんなセミナーをやるんだった。XHTML+CSS (r)evolution, 2nd。内容は「CSS3のカタチとナカミ」だそうです。

ネーミングの実例から考える

上之郷谷さんが、「CSS でよく使う装飾定義をコンポーネントとしてまとめる」を拝見しましたが、ちょっと問題があります。ネーミングの考え方が少しどうかな、というところがある気がします。

例えば、「class="tab"」という指定ですが、タブ式ナビゲーションじゃないところに、「class="tab"」なの!?という気がします。ナビゲーションには「navigation」もしくは、その省略形の「nav」が入った形がふさわしいと思います。まぁ、アップルみたいなナビゲーションは別ですが(笑)

妥協するところ

といっても、すべてが妥当なネーミングができる訳ではありません。ネーミングが考えつかないときもあります。例えば、「角丸」ですが、角丸を構成するクラスは、「文書中では役割がありません」というときも出てきます。また、本来は妥当な名前ではないが、世間で一定の認知度を得てしまったもの(「clearfix」など)も、妥協してもやむをえないかな、と思います。

コンポーネントでのネーミングルール

さて、私がいま制作しているコンポーネント・モジュールでは、まともなネーミングを考えていたらきりがありません。下手したら、一生かかるでしょう。主要なモジュールだけで、20個以上あるのですから。そこで、以下のようなルールで作っていきます。(半分、妥協の産物みたいだけど)

  1. 確実に、ネーミングがつけていけるものは、その名前をつける。(例:カレンダー用のテーブルは、「CalTable」とつける)
  2. 必ず、名前の一部に「役割」が入るようにする。
  3. ul要素、dl要素でインライン要素がはいってくるものは、「Inline」が名前の一部に入るようにする。(例:インラインにしてページ番号が入るものは、「InlinePageList」とする。など)
  4. 同じ役割でも、ちがうスタイルになるものは、別のネーミングを考える。(例:「InstructionsDocs」と「NoticeTable」)(追記:例えば、同じ「※」印の注釈を扱うクラスでも、 p要素を使うもの(text-indentを使ってスタイルを組む)とtable要素(th要素に「※」、td要素に注釈本文が入る)を使うものは分別する。などする。)
  5. 「文書中では役割がない」ときになって、はじめて妥協する。(例:角丸専用のクラス「CurvyCorners」など)
  6. 「世間で一定の認知度を得てしまったもの」は、できるだけその名前を使う。(「clearfix」など)
  7. クラスは、複数与えられるものなので、実際の仕事とかで使うときには、「文書構造に即した役割」のためのクラスも付加する。

結局のところ

理想と現実はかくも離れている、というわけで。「分かりやすくて妥当なコンポーネントのネーミング、は不可能」かな、と。


トラックバック

このエントリーのトラックバックURL : http://www.studionh.net/mt/mt-tb.cgi/42

この一覧は、次のエントリーを参照しています。

コメントを投稿

以下の内容が送信されます。

※ブログオーナーが承認したコメントのみ表示されます。

Return To Top

カテゴリー一覧
月別アーカイブ一覧
最近のエントリー

以前の記事へ