「CSSハック」の版間の差分

{{See also|Cascading Style Sheets}}
 
[[World Wide Web Consortium|W3C]]の標準仕様に従ったWebサイトを作成すれば、理想的には各ブラウザでの表示の差は生じない(あるいは少なくなる)はずであことになるが、実際にはブラウザによりCSSのサポートが異なり、また比較的サポートの遅れたブラウザが進んだブラウザに置き換わるまでには時間を要するため、表示の差異が生じる原因となる。特にIE5.5以前(IE6.0の[[互換モード]]なども含む)ではボックスモデルの解釈がW3C標準のものと異なり、widthプロパティの値にボーダーとパディングを含めていたことがこれらのブラウザが無視できないシェアを占めていた時期のWebサイト作成の障害の一つだった。解決法としてはブラウザ間での違いが目立たない値に指定する(例えばボックスモデルの問題はボーダーとパディングをともに0とする)に指定するなどいくつかの方法が考えられるが、CSSハックはそうした実装の違いをCSSコーディングのテクニックで吸収する方法の一つである。
 
具体的には各ブラウザの実装状況やバグを逆手に取り、ブラウザによって異なる宣言を読み込ませることとなる。ハックの中には対象とするブラウザ以外にも効果を及ぼすものもあるため、そうしたブラウザ向けに正規の方法で値を指定し直す場合もある。CSSハックの定義は曖昧で、一部のブラウザのみが実装しているセレクタなどを単に使用しただけのものをCSSハックに含めるかは場合による。
 
ブラウザの置き換えは常に続いているため、あるブラウザを対象としたCSSハックはそのブラウザのシェア低下とともに意味が薄れることになるが、今度は一方で別のブラウザを対象とした新しいたなCSSハックが生み出されることとなり、実際に考案され続けてい可能性もある。またブラウザのバグを利用するものであるため、サイト作成時点では問題なく使用できたとしても、将来新しいブラウザがリリースされる際にバグが修正されることで古いブラウザ向けの宣言が制作者が意図に反して適用される可能性がある。実際にIE7のリリースによりそれ以前は通用していたCSSハックに問題が発生することとなった。CSSの記法として妥当(valid)でない(Validatorでinvalidと判定される)ものも存在する。こうした点から使用せず済む関しては種々議論がればそれに越したことはない
 
== CSSハックの例 ==
8,637

回編集