Хаки – особые комбинации символов, которые приводят к неожиданному результату. В верстке хаки это селекторы CSS которые написаны таким образом, что они воспринимаются разными браузерами по-разному.

Например, селектор * html #someName будет воспринят только IE6. Все остальные браузеры его проигнорируют. Несмотря на мнимую простоту в использовании, хаки имеют ряд недостатков. Главный недостаток состоит в том, что хаки в большей степени основаны на ошибках, или неточностях интерпретации, по этому, есть вероятность того, что с выходом новой версии браузера старые хаки будут исправлены. Посему процесс поиска хаков является бесконечным. Другим немаловажным недостатком является то, что большинство хаков не проходят валидацию.

Целью этой заметки было собрать работающие хаки. На момент написания статьи хаки проверялись в таких браузерах:Opera 9.52, Firefox 3.0.1, IE6,7,8.beta1, Safari 3.1.2,Google Chrome 0.2.149.

Для того чтоб использовать на одном компьютере несколько версий браузера Internet Explorer необходимо установить IETester или Multiple IE. Подробней можно прочитать в заметке «Джентльменский набор верстальщика«

Синтаксис хаков


/* Хак только для IE6 */
* html .ie6 {
color:red;
}

/* Хак только для IE6 */
.ie6a {
_color:yellow;
}

/* Хак только для IE6,7 */
.ie6_7 {
//color:yellow;
}

/* Хак только для IE7,8.beta 1 */
* + html .ie7 {
color:green;
}

/* Хак только для IE7,8.beta 1 */
*:first-child+html .ie7a {
color:#0000CC;
}

/* Хак только для IE7,6 */
.ie7b {
#color:#00FF00;
}

/* Хак только для IE7,FireFox */
.ie7ff, x:-moz-any-link {
color:#00FFFF;
}

/* Хак только для IE7,FireFox */
 html:not([lang*=""]):not(:only-child) .ffSafariChrome {
color:#990000;
}

/* Хак только для Safari,Opera,Google Chrome*/
@media all and (min-width: 0) {
.safariOperaChrome {
color:#FF00FF;
}}

/* Хак только для Safari,FireFox,Google Chrome */
html:root .ffSafariChrome {
color:#660066;
}

/* Хак только для Safari,Opera,Google Chrome */
body:first-of-type .operaChromeSafari {
color:orange;
}


Реализация хаков

Резюме

Как видно из примера, хаки это довольно сомнительный способ получения кроссбраузерности. Фактически пока есть только хаки под Internet Explorer 6, которые работают только в этом браузере. С моей точки зрения единственным эффективным инструментом для отделения одного браузера является условный комментарий. Подробней об условных комментариях можно прочитать в заметке «Условные комментарии для IE«

Tags: , , , ,

15 Отзывов to “Хаки – краткий путь к кроссбраузерности?”

  1. Jman:

    /* Хак только для Safari,Opera,Googe Chrome */
    body:first-of-type .operaChromeSafari {
    color:orange;
    }

    Ошибка номер раз Google ;) (не только тут).
    Ошибка номер два &mdash это не хак, а использование CSS3. Тоесть играем в рулетку, сегодня это понимает только опера, сафари и хром, а завтра может и IE8 понимать….

  2. Jman:

    Плагин который подсвечивает код, распознал то что ты написал, как javascript. Если я не ошибаюсь то можно в ручную задавать, <code class=»css» > может конечно это не главное ;)

  3. Zodios:

    К сожалению любой хак это игра в рулетку, так как с выходом новой версии он может быть не убран…

  4. Условные комментарии для IE | ZODIOS.net:

    [...] перед хаками(подробней о хаках читай в заметке Хаки – краткий путь к кроссбраузерности?) является то, что они проходят валидацию и скорее [...]

  5. Fresh2l web agency:

    Я понимаю это так – есть хаки для IE, а есть нормальные браузеры понимающие CSS. И пользоваться хаками нужно только в том случае, когда IE выпендривается, а остальные браузеры видят все одинаково. У меня 90% проблем именно такие: все браузеры кроме IE показывают сайт правильно :(

  6. Maxja:

    Поделюсь ещё одним «хаком» который работает в IE 5.5-7 точно, в 8 не проверял. Найден эксперементально.
    Заключается он в том, что после описания общей части, для всех нормальных браузеров ставится парная закрывающая фигурная скобка «}}», далее описываются исключения для IE.

    Лично меня, в моём же решении, привлекает простота, как в написании, так и в последующем чтении кода. ;)

  7. Zodios:

    Это связано с тем что все нормальные браузеры не воспринимают все что идет после }}. Довольно неудобно, так как нужно все стили которые должны быть адекватно воспринятые должны стоять выше.

  8. Maxja:

    Эт очевидно.
    Невижу в этом неудобства.

  9. Rootical:

    Товарищи, а не подскажите, существует ли хак для IE 5.5?

  10. Rootical:

    Хак для ИЕ 5.5 – *html :)

  11. Эмуляция min-width, max-width под IE6 | ZODIOS.net:

    [...] от подключения JS скриптов. Учитывая, что под IE6 пишутся хаки почти при каждой верстке, это еще и позволяет добиться [...]

  12. Удвоение отступа(margin) в Internet Explorer 6 | ZODIOS.net:

    [...] или хаки (подробней о хаках можно прочитать в заметке Хаки – краткий путь к кроссбраузерности?) для того чтоб это присвоение было воспринято только в [...]

  13. Полезные Links | TEA & SEO Блог:

    [...] Хаки для верстальшиков [...]

  14. Игорь:

    вообще, это не все хаки + некоторые не рекомендуется использовать. Вот ещё есть статья – только там уже все хаки хаки под ИЕ

  15. Sash_flac:

    а если пользоваться php, чтоб он определял браузер и разрешение? и соответственно загружал определенный css

Оставить отзыв


Последние записи