Хак – это специальная css-конструкция, которую одни браузеры понимают, а другие игнорируют. Использование хаков, как правило, говорит о непрофессиональности верстальщика. Но бывают встречаются случаи, когда все-таки без хаков не обойтись и их использование является единственным случаем избавления от проблем.
Если есть возможность избежать использования хаков, то лучше их не использовать. А для исправления ошибок в Internet Explorer лучше использовать отдельный файл, который можно подлкючить с помощью условных комментариев (векторов версий).
Internet Explorer 7
Хак | Пример |
*+html | *+html .class{color:green} |
* | .class{ *color:green } |
// | .class{ //color:green; } |
Internet Explorer 8
Хак | Пример |
@media \0screen{ } |
@media \0screen{.color {color: #f00} } |
Internet Explorer 10
Хак | Пример |
@media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) { } |
@media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) {.color {color: #f00} } |
Векторы версий Internet Explorer 10 уже не поддерживает, поэтому отдельного файла со стилями не получится сделать через условные комментарии.
Firefox
Хак | Пример |
@-moz-document url-prefix() {} |
@-moz-document url-prefix() {.color {color: #f00} } |
Chrome & Safari
Хак | Пример |
body:not([x|x]) |
body:not([x|x]) .class{ |
@media all |
@media all and (-webkit-min-device-pixel-ratio:0) { |
Opera
Хак | Пример |
noindex:-o-prefocus, .class{ } |
noindex:-o-prefocus, .MyClass {color:red;} |