До сих пор существует проблема совместимости между разными браузерами: в них один и тот же элемент может отображаться по-разному. Типичный пример несоответствий – шрифты: разные браузеры рисуют из по-разному, в некоторых они слишком жирные, в других наоборот, слишком тонкие, один и тот же знак может иметь разную высоту и ширину. Не все благополучно и с прорисовкой других CSS-элементов. Все это приводит к тому, что сайт приходится подгонять под разные браузеры. Одна и та же запись в CSS-файле может приводить в разных браузерах к разному виду на экране, и чтобы этого не происходило, разработчики браузеров придумали CSS-хаки – корректирующие дополнения в CSS, которые имеют силу только в своем браузере. Конечно, разработчики тем стараются не использовать элементы, неоднозначно отображаемые в разных браузерах, но все же в современном сайтостроительстве пока что полностью без них обойтись почти невозможно, и любая тема содержит небольшое количество CSS-хаков. Давайте познакомимся с наиболее часто употребляемыми из них.
@media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) { .style {position: relative; top:5px;} }[info txt=”Наибольшей проблемой для разработчиков был Internet Explorer более древних версий. И хотя сейчас можно уже перейти на Internet Explorer 10, версии которого существуют для Windows 7 и Windows 8 (IE10 поддерживает все современные стандартны, а в некоторых экспериментальных функциях даже ушел вперед), все же есть целые корпоративные сети, использующие Internet Explorer 9, 8 и даже 7 и 6 версий. Поэтому пока что до сих пор актуальны CSS-хаки для этих древних версий.”]
:root .style { color: #FA69; }
@media screen { .style {position:relative; top:5px;} }
html>body .style { *color: #FA600; }
* html .style { position:relative; top:5px; }
@-moz-document url-prefix() {
.style {position:relative; top:5px;}
body:last-child:not(:root:root) .style { position:relative; top:5px; }
html[xmlns*=""] body:last-child .style { position:relative; top:5px; }
@media all and (min-width: 0) { .style { position:relative; top:5px; } }[info txt=”Разработчики браузера Opera объявили, что прекращают развитие своего собственного движка Presto, и переходят на движок Webkit, на котором работают все браузеры, в основе которых лежит код Chromium. Поэтому наверняка с выходом новой версии браузера CSS-хак для Opera станет недействительным. Но все же пока оставлю его в запасе, так как в рунете браузер Opera все еще довольно популярен.”]
Так же обратите внимание на способ, позволяющий создавать оформление, вид которого зависит от того, в каком браузере просматривается сайт – он позволяет и вовсе обойтись без CSS-хаков. Суть его в том, что внедряется специальная функция, определяющая, каким браузером просматривается сайт, и в зависимости от этого добавляется класс оформления, соответствующий браузеру.
