Css хаки для IE8, Opera и других браузеров

     Они такие разные... и всё же каждый находит своего пользователя. А бедный верстальщик просто готов повесится от радости. Или не от радости?

     Для создания универсальной верстки, одинаково отображающейся во всех браузерах, порой приходится играть в грязные игры с программным кодом. Одной из этих игр является использование так называемых css хаков (или фильтров). Css хак - это стилевое правило, которое работает в одном браузере и не работает в другом, чем позволяет создавать разное отображение вашей информации в разных браузерах, или наоборот сглаживать погрешности отображения в разных браузерах. Зачем вам это - ваше дело, другое дело, как это сделать?

     Эту статью я готовил достаточно основательно и часов 5 перерывал интернет в поисках свежих и рабочих css хаков, затем создавал проверочную таблицу (она ниже на странице), некоторые хаки, например хак для Chrome и хак для Internet Explorer 8 пришлось составлять самому, просто потому, что их нет в сети.

     Что получилось в итоге? В итоге у нас: 13 способов идентификации различных версий и групп браузеров Internet Explorer, два способа написать стиль только для Opera (9 и 10 версии), один способ написать css только ля Google Chrome (в сети такого нет), способ написать стиль только для последней версии Safari (нашел в каком то маленьком буржуйском блоге за три девять земель), и способ написать стиль только для Mozilla FireFox (могло быть больше, но я посчитал что для хорошего браузера одного способа хватит) и ещё несколько способов получить различные группы выше перечисленных браузеров.

     Все способы описаны в таблице ниже. Если хак выполняется в данный момент - он выделится зеленым цветом. То есть если вы просматриваете данную страницу с помощью Opera, то все строчки, содержащие справа слово Opera - подсветятся. Слева описана структура самого хака, а справа перечислены браузеры, которые прочитают свойство в хаке. Opera подразумевает браузеры 9 и 10 версии. Все хаки протестированы на странице в режиме соответствия стандартам (то есть с соответствующим доктайпом) и работают на момент создания поста. Я не стал выкладывать хаки для старых версий нормальных браузеров типа Opera или FireFox.
     В качестве бонуса внизу таблицы содержится графа, которая определит ваш браузер основываясь только на css свойствах (моя скромная разработка). Вот её исходный код:
Code
<style type="text/css">
.div {padding:10px;margin:0 0 2px 0;font:10px Tahoma, Verdana;background-color:#eee;color:#777;}
.bd1,.bd2,.bd3,.bd4,.bd5,.bd6,.bd7,.bd0 {display:none;text-align:center;font-weight:bold;}
@media screen and (-webkit-min-device-pixel-ratio:0){.bd0 {display:block}.bd0:not(:root:root){display:none}} /*хромой*/
.bd2:not(:root:root) {display:block} /* сафари */
*|html[xmlns*=""] .bd1 {display:block} /* опера */
@-moz-document url-prefix(){.bd3 {display:block}} /* лиса */
html[xmlns*=""] .bd4 {display:block\9;]display:default} /* IE8 */
*+html .bd5 {display:block} /* IE7 */
* html .bd6 {display:block;\\display:default} /* IE6 */
.bd7 {\\display:block} /* IE5.5 */
</style>
<div class='bd0 div'>Ваш браузер - Google Chrome</div>
<div class='bd1 div'>Ваш браузер - Opera</div>
<div class='bd2 div'>Ваш браузер - Safari</div>
<div class='bd3 div'>Ваш браузер - FireFox</div>
<div class='bd4 div'>Ваш браузер - IE8</div>
<div class='bd5 div'>Ваш браузер - IE7</div>
<div class='bd6 div'>Ваш браузер - IE6</div>
<div class='bd7 div'>Ваш браузер - IE5.5</div>
     Надеюсь, вы сочтете статью интересной.


ВИДЕОДЕСЕРТ

    Его зовут Ной Калина (Noah Kalina) и он фотографировал себя каждый день на протяжении шести лет. А потом сделал это видео..:
Совершенно замечательная музыка из этого клипа называется Carly Comando - Everyday

Жми на пятую!
30, 9, 24158
№9
В смысле хаки работают, но "Ваш браузер - Opera" не выводит
Проверял на кроссоперность :] на 3 операх.
На всех работает "@media not all and (-webkit-min-device-pixel-ratio){селектор {свойство:значение}}"
А который поставлен "*|html[xmlns*=""] селектор {свойство:значение}" работает только в одной
№8
[sayto]Aleko[/sayto], может! У меня так же!
И еще... боюсь разочаровать, но в Опере 10.51 ни один хак не работает...
Ответ: Хех, ну выходит, что ничто не вечно))
№7
[sayto]bolk[/sayto], а кто сказал что я претендую на его авторство?)
№6
[sayto]NAV![/sayto], большое спасибо =)
№5
Буду помнить как Отче Наш! Спасибо!
№4
А у меня в I.E весь шаб сыпится, причем только у не авторизованного пользователя. Как это можно вылечить?
до входа http://i042.radikal.ru/0910/22/b67f52bc4f2b.png
после http://i042.radikal.ru/0910/8c/eef1bc210c36.png
№3
Это ИЕ 7...
Ответ: Большое спасибо, всё исправил.
№2
[sayto]Aleko[/sayto], спасибо за хаки будем тестить! а то у меня в ослике дизайн едет в разные стороны! :(
№1
Отличная подборка. Только следует ещё указать при каких условиях работают те или иные хаки: например без указанного для html аттрибута xmlns хак для opera не пашет.
    © Блог StudioAD.ru 2024 год нашей эры. Не все права защищены... Копирование любой информации и материалов с обратной ссылкой приветствуется! Хостинг от uCoz.

    Если вам пришлись по душе материалы моего блога - подпишитесь на RSS дабы получать обновления незамедлительно! Я рад что вы читаете и комментируете мои экзерсисы, приятного времяпрепровождения.