Под словом «хак» подразумевается специальный прием, который применяется для изменения стиля отображения станицы в определенном браузере. Применение хаков вызвано, прежде всего, наличием ошибок в самих браузерах, которые приводят к тому, что различные браузеры одну и ту же страницу отображают по-разному, в результате чего читать goldline pro отзывы или какую-нибудь статью – становится неудобно. Поэтому применение хаков позволяет создать, так называемую, кроссбраузерную верстку.
В браузере IE7 были устранены обнаруженные в предыдущей версии ошибки, но в тоже время появились новые, для устранения которых требуется писать отдельный код.
Устранение ошибки с !important привело к появлению новой – добавление после свойства восклицательного знака и любого набора символов приводит к тому, что браузер вместо игнорирования кода, будет его корректно воспринимать.
Для создания хака применяется запись !ie, в результате стиль будет применяться только IE6 и IE7, все остальные браузеры будут его игнорировать.
Код:
<style type="text/css">
.hack_background {
background: yellow; /* Желтый цвет */
background: gray !ie; /* Серый цвет для IE7*/
padding: 5px; color: #ffffff;
}
</style>
В результате применения этого хака в IE фоновый цвет будет серым, а в остальных браузерах – желтым.
Следующая проблема с !important заключается в том, что браузер IE7 разрешает недопустимые символы. Например, такая запись !!important будет проигнорирована всеми браузерами, кроме IE6 и IE7, которые воспримут ее как корректную.
Код:
background: green; /* Зеленый цвет */
background: gray !!important; /* Серый цвет для IE7*/
Результат такой же, как и в первом варианте. Обратите внимание, приведенные выше примеры, с точки зрения спецификации CSS, являются невалидными.
Добавление символа * перед именем свойства является некорректным по спецификации CSS, но воспринимается браузерами до IE7.
Код:
background: green; /* Зеленый цвет */
*background: gray !!important; /* Серый цвет для IE7*/
Следующая конструкция *:first-child+html, добавленная перед именем селектора, хоть и соответствует спецификации CSS, но работает только Internet Explorer 7.
Код:
<style type="text/css">
*:first-child+html .hack_background {
background: gray; /* Серый цвет для IE7*/
}
.hack_background{
background: yellow; /* Желтый цвет */
color: #ffffff; padding: 5px;
}
</style>
В данном примере цвет фона в IE7 будет серым, а в остальных браузерах желтым. |