CSSがvalidでなければいけない理由とは?

Lucky bagで「CSSがvalidでなければいけない理由って何ですか」という質問が。
答えがぱっと出ず、しばらく悩んでしまいました。
私なりの結論を出してみました。

まず、何を持ってCSSが「vaild」である(仕様に沿った正しい記述をしている)かですが、ここではW3C CSS 検証サービスで、vaildになることを指すことにします。

invaildになる(不正と見なされる、検証サービスで怒られる)CSSには主に3種類あります。

  1. ただの記述ミス
  2. ブラウザ特有のCSSを使用している
  3. CSS Hackを使用している

1.の場合は明らかにデザインくずれを起こしたり、思うようなデザインができないので、vaildにする必要があります。

2.や3.の場合は、思い通りのデザインにするためのCSSなので、それがinvaildであろうとも、別に使用することが間違いとは言えません。

恐らく、福島さん(Lucky bagの人)が「CSS が valid でなければいけない理由って何ですか?」と質問した裏には、「ブラウザ特有のCSSやCSS Hackを使用することは正しいのですか?」という疑問もあるのだと思います。

ブラウザ特有のCSSやCSS Hackを使用するメリットには以下のようなことが挙げられます。

  • トリッキーなデザインを表現できる。(よりリッチに表現できる。)
  • 他のブラウザと見た目を一緒にできる。
  • デザインくずれを防止できる。

一方、ブラウザ特有のCSSやCSS Hackを使用するデメリットには以下のようなことが挙げられます。

  • 他のブラウザとは見た目が異なる場合がある。
  • ブラウザのバージョンが更新されたとき、ハックが有効でなくなる場合がある。
  • カスタマイズやメンテナンスがしにくくなる。

一長一短と言った感じですね。ハックによってはデザインを統一したり、逆にデザインを異なるものにしたりすることができると言うことです。

私個人の意見としては、ブラウザ特有のCSSやCSS Hackを使用してもよいとは思いますが、最終手段として極力避けたほうが無難だと思います。

私は今まで仕事や趣味で作っているwebサイトではCSS Hackを使用したことがありません。というのも、ハックを使用しなければならないようなデザインにしないからです。あとは、古いブラウザは閲覧対象にしていないというのもあります。

ただし、例外がひとつだけあって、「clearfix」(回り込みをしたブロックを包括するためのハック)だけは使います。

私の考えとしては、「できるだけハックを使用しないと実現しないデザインは採用しないほうがよい。そこまでデザインにこだわるようであれば(極論を言えば)Flashを使ったほうがよい。」ということです。大抵のデザインは、ハックなしでできるはずです。

wuさんがこの記事にコメントされていたのですが、まさに私と同じ考えでしたので、引用させていただきます。(ただし私の場合は4まで行ったことがないw)

★1.よりシンプルな解決方法はないだろうか?
validであってCSSの解釈の違いから解決することはできないか考える。

★2.同じ表現になるような代替案は無いだろうか?
スタイルを適用する要素を変えたりして同じような表現はできないか考える。

★3.ビジュアルデザインのほうに無理は無いだろうか?
デザインを少し変えるだけで解決できるなら、同等か、さらに良い表現方法はないか考える。

★4. 1,2,3で解決できない場合は適したハックを選んで最小限使う。管理できるようにコメントをつける。(そして、僕はここでその記述がvalidかinvalidかは気にしない。この段階ではアンダースコアハック万歳な気分になってる)

Lucky bag::blog: CSS が valid でなければいけない理由って何ですか?より引用

確かにブラウザ独自のバグとかもあります。どうしてもハックを使用しないといけない場合もあります。そういう場合はきちんとコメントをしてハックであることを明記しておかないと、メンテナンス時に困りますので気をつけましょう。

バグに関する参考サイト
CSSバグリスト@CSSバグ辞典スレッド

仕様に沿った記述をすべきっていう真っ当な回答(かどうかはわかりませんが)

純粋に福島さんの質問に答えてみようと思います。

単純にブラウザ独自のCSSとかハックとか関係なしに、なんで「vaild」がよいのか?と言ったら、それがCSSを書くための最低のモラルだからじゃないでしょうか?ルールがないあるいはルールを守らない世界は成り立ちません。このことは何のことにも言えることですが。

ルールがあるからこそ、面白い。その中で最も最適なソースコードを求めることに喜びを見出すのが、プログラマだったりコーダーだったりするのではないのかぁ?と思います。(あ、なんかマゾヒスティックw)

Case by Caseという言葉があるように、またルールが必ずしも正しいとは限らないように、あるいは地域でルールが異なるように、ルールに外れたことが正しいこともあるわけです。

※補足する必要もないとは思いますが、ここで言っているルールって言うのはつまり「vaild」なことで、地域っていうのはブラウザのことです。

投稿日:2007年6月 9日

トラックバック歓迎です。以下URLにて登録をお願いいたします。

このエントリーのトラックバックURL:

↓↓↓トラックバックしてくださった方々↓↓↓
※トラックバックされても管理人がスパムと判断したものは公開されません。

top