Хаки – краткий путь к кроссбраузерности?
09.7.2008 – Рубрика: HTML&CSS
Хаки – особые комбинации символов, которые приводят к неожиданному результату. В верстке хаки это селекторы 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: Chrome, CSS, Internet Explorer, Opera, Safari
15 Отзывов to “Хаки – краткий путь к кроссбраузерности?”
Оставить отзыв
Последние записи
- DATA:URL – Картинки в документе без дополнительных запросов к серверу
(Вторник, 09. 8. 2009 – 5 отзывов) - Как изменить внешний вид checkbox
(Вторник, 04. 28. 2009 – 21 отзывов) - Как сделать галерею товаров для интернет-магазина
(Пятница, 03. 13. 2009 – 5 отзывов) - Я.ру
(Воскресенье, 03. 8. 2009 – нет отзывов)
Сентябрь 29, 2008 в 13:04
/* Хак только для Safari,Opera,Googe Chrome */
body:first-of-type .operaChromeSafari {
color:orange;
}
Ошибка номер раз Google
Ошибка номер два &mdash это не хак, а использование CSS3. Тоесть играем в рулетку, сегодня это понимает только опера, сафари и хром, а завтра может и IE8 понимать….
Сентябрь 29, 2008 в 13:08
Плагин который подсвечивает код, распознал то что ты написал, как javascript. Если я не ошибаюсь то можно в ручную задавать, <code class=»css» > может конечно это не главное
Сентябрь 29, 2008 в 17:31
К сожалению любой хак это игра в рулетку, так как с выходом новой версии он может быть не убран…
Сентябрь 29, 2008 в 18:18
[...] перед хаками(подробней о хаках читай в заметке Хаки – краткий путь к кроссбраузерности?) является то, что они проходят валидацию и скорее [...]
Октябрь 26, 2008 в 21:07
Я понимаю это так – есть хаки для IE, а есть нормальные браузеры понимающие CSS. И пользоваться хаками нужно только в том случае, когда IE выпендривается, а остальные браузеры видят все одинаково. У меня 90% проблем именно такие: все браузеры кроме IE показывают сайт правильно
Ноябрь 13, 2008 в 19:12
Поделюсь ещё одним «хаком» который работает в IE 5.5-7 точно, в 8 не проверял. Найден эксперементально.
Заключается он в том, что после описания общей части, для всех нормальных браузеров ставится парная закрывающая фигурная скобка «}}», далее описываются исключения для IE.
Лично меня, в моём же решении, привлекает простота, как в написании, так и в последующем чтении кода.
Ноябрь 14, 2008 в 13:36
Это связано с тем что все нормальные браузеры не воспринимают все что идет после }}. Довольно неудобно, так как нужно все стили которые должны быть адекватно воспринятые должны стоять выше.
Ноябрь 14, 2008 в 16:28
Эт очевидно.
Невижу в этом неудобства.
Декабрь 29, 2008 в 11:38
Товарищи, а не подскажите, существует ли хак для IE 5.5?
Декабрь 29, 2008 в 12:12
Хак для ИЕ 5.5 – *html
Март 8, 2009 в 18:58
[...] от подключения JS скриптов. Учитывая, что под IE6 пишутся хаки почти при каждой верстке, это еще и позволяет добиться [...]
Март 8, 2009 в 19:04
[...] или хаки (подробней о хаках можно прочитать в заметке Хаки – краткий путь к кроссбраузерности?) для того чтоб это присвоение было воспринято только в [...]
Март 14, 2009 в 15:08
[...] Хаки для верстальшиков [...]
Июнь 4, 2009 в 4:32
вообще, это не все хаки + некоторые не рекомендуется использовать. Вот ещё есть статья – только там уже все хаки хаки под ИЕ
Ноябрь 14, 2009 в 10:51
а если пользоваться php, чтоб он определял браузер и разрешение? и соответственно загружал определенный css