Личный кабинет
2008-11-03 21:13
Часто использование хаков (в частности для IE – когда же он умрёт, как браузер?!), ну и для остальных навигатор оправдано и так намного проще. Но случается, что заказчик (ну или просто кому-то само название «хак» не нравится) требует вёрстку без использование хаков. Что тогда делать, неужели придется смириться с некроссбраузерностью под определённые версии браузеров?! Нет, конечно…
Конечно же, никакой революции в себе статья не несёт и кто-то из Вас уже делал нечто подобное. Но большинство найдёт здесь хорошие советы, да и освежать знания иногда полезно.
Суть идеи заключается в использовании серверного языка PHP для «кроссбраузерности» нашей вёрстки. Конечно же, можно использовать любой другой язык (Perl, Java и т.д.).
Итак, перед тэгом <body> в нашем файле помещаем такой код:
<?php
$sBrowserClass = "";
if (preg_match("/Opera\W*(\d+(:?\.\d+)?)/",@$_SERVER["HTTP_USER_AGENT"], $aMatch)) {
$sBrowserClass = "isOpera";
if (@$aMatch[1] && $aMatch[1] < 9) {
$sBrowserClass .= " isOpera8";
}
} elseif (preg_match("/MSIE\W*(\d+(:?\.\d+)?)/",@$_SERVER["HTTP_USER_AGENT"], $aMatch)) {
$sBrowserClass = "isIE";
if (@$aMatch[1] && $aMatch[1] < 7) {
$sBrowserClass .= " isIE6";
}
}
if ($sBrowserClass) {
$sBrowserClass = ' class="' . $sBrowserClass . '"';
}
?>
<body<?=$sBrowserClass?>>
Теперь для Internet Explorer 7 тэг <body> будет выглядеть следующим образом: <body class="isIE">.
Для его более старой версии IE6 body будет выглядеть как: <body class="isIE isIE6">
Для Opera9 и выше будет выглядеть так: <body class="isOpera">
Для Opera ниже 9-й версии тэг body будет выглядеть так: <body class="isOpera isOpera8">
Для остальных браузеров тег будет выглядеть просто: <body>. Список можно продолжить или заменить пункты на названия «непокорных» браузеров.
Вот так теперь должен выглядеть наш css-файл:
#top_menu {
margin: 0px 5px;
overflow: hidden;
background: #DAE0D2 url("/images/m_bg.gif") repeat-x bottom;
padding-bottom: 1px;
display: block;
}
.isIE #top_menu {
height: 28px;
}
.isIE6 #top_menu {
height: 30px;
overflow: auto;
}
.isOpera #top_menu {
margin-bottom: 6px;
}
Теперь я думаю всем понятна структура этого CSS-файла.
Порядок работы
Для начала пишем полную версию CSS-файла и делаем его отладку, например на последней версии Mozilla Firefox;
Затем пишем дополнения/изменения отдельных для Opera, Safari или Internet Explorer;
Удобство данного способа заключается в том, что Вам нет необходимости использовать хаки, поэтому, с большой долей вероятности код будет правильно работать и в более поздних версиях браузеров.
Так же намного удобнее будет вносить какие-либо изменения в сам css-файл, так как все стили лежат рядом с друг другом.
Незначительное увеличение CSS-файла никак не повлияет на общую скорость загрузки сайта, т.к. эти дополнения составляют, как правило, 5-10% от исходного размера CSS-файла. А иногда и того меньше.
Если же Вы по каким-либо причинам не хотите использовать php: не знаете, лень и т.д., или же просто напросто Ваш сервер не поддерживает их, можно воспользоваться таким способом:
<!--[if gte IE 7]><body class="isIE"><![endif]-->
<!--[if lt IE 7]><body class="isIE isIE6"><![endif]-->
<!--[if !IE]>--><body><!--<![endif]-->
Комментарии
#1 Ivan
2008-10-1119:37:58
Цитата:
в частности для IE – когда же он умрёт, как браузер?!
эту цитату нужно сделать своей подписью )))
автору 5+
RSS лента комментариев этой записи.
Конечно же, никакой революции в себе статья не несёт и кто-то из Вас уже делал нечто подобное. Но большинство найдёт здесь хорошие советы, да и освежать знания иногда полезно.
Суть идеи заключается в использовании серверного языка PHP для «кроссбраузерности» нашей вёрстки. Конечно же, можно использовать любой другой язык (Perl, Java и т.д.).
Итак, перед тэгом <body> в нашем файле помещаем такой код:
<?php
$sBrowserClass = "";
if (preg_match("/Opera\W*(\d+(:?\.\d+)?)/",@$_SERVER["HTTP_USER_AGENT"], $aMatch)) {
$sBrowserClass = "isOpera";
if (@$aMatch[1] && $aMatch[1] < 9) {
$sBrowserClass .= " isOpera8";
}
} elseif (preg_match("/MSIE\W*(\d+(:?\.\d+)?)/",@$_SERVER["HTTP_USER_AGENT"], $aMatch)) {
$sBrowserClass = "isIE";
if (@$aMatch[1] && $aMatch[1] < 7) {
$sBrowserClass .= " isIE6";
}
}
if ($sBrowserClass) {
$sBrowserClass = ' class="' . $sBrowserClass . '"';
}
?>
<body<?=$sBrowserClass?>>
Теперь для Internet Explorer 7 тэг <body> будет выглядеть следующим образом: <body class="isIE">.
Для его более старой версии IE6 body будет выглядеть как: <body class="isIE isIE6">
Для Opera9 и выше будет выглядеть так: <body class="isOpera">
Для Opera ниже 9-й версии тэг body будет выглядеть так: <body class="isOpera isOpera8">
Для остальных браузеров тег будет выглядеть просто: <body>. Список можно продолжить или заменить пункты на названия «непокорных» браузеров.
Вот так теперь должен выглядеть наш css-файл:
#top_menu {
margin: 0px 5px;
overflow: hidden;
background: #DAE0D2 url("/images/m_bg.gif") repeat-x bottom;
padding-bottom: 1px;
display: block;
}
.isIE #top_menu {
height: 28px;
}
.isIE6 #top_menu {
height: 30px;
overflow: auto;
}
.isOpera #top_menu {
margin-bottom: 6px;
}
Теперь я думаю всем понятна структура этого CSS-файла.
Порядок работы
Для начала пишем полную версию CSS-файла и делаем его отладку, например на последней версии Mozilla Firefox;
Затем пишем дополнения/изменения отдельных для Opera, Safari или Internet Explorer;
Удобство данного способа заключается в том, что Вам нет необходимости использовать хаки, поэтому, с большой долей вероятности код будет правильно работать и в более поздних версиях браузеров.
Так же намного удобнее будет вносить какие-либо изменения в сам css-файл, так как все стили лежат рядом с друг другом.
Незначительное увеличение CSS-файла никак не повлияет на общую скорость загрузки сайта, т.к. эти дополнения составляют, как правило, 5-10% от исходного размера CSS-файла. А иногда и того меньше.
Если же Вы по каким-либо причинам не хотите использовать php: не знаете, лень и т.д., или же просто напросто Ваш сервер не поддерживает их, можно воспользоваться таким способом:
<!--[if gte IE 7]><body class="isIE"><![endif]-->
<!--[if lt IE 7]><body class="isIE isIE6"><![endif]-->
<!--[if !IE]>--><body><!--<![endif]-->
Комментарии
#1 Ivan
2008-10-1119:37:58
Цитата:
в частности для IE – когда же он умрёт, как браузер?!
эту цитату нужно сделать своей подписью )))
автору 5+
RSS лента комментариев этой записи.
Средняя оценка участников (от 1 до 10): Пока не оценено
Проголосовавших: 0
Проголосовавших: 0
- Фреймы в HTML документах (2008-11-04)
- 10 признаков дурного тона в web-дизайне (2008-11-04)
- 800 и 1024. Пиксели или проценты? (2008-11-04)
- Как работает формат JPEG? (2008-11-04)
- О композиции в дизайне (2008-11-04)
- Психология в дизайне (2008-11-04)
- Шрифты (2008-11-04)
- Как сделать качественный веб-сайт (2008-11-04)
- Какой вид дизайна выбрать? (2008-11-04)
- Выпадающие меню с помощью CSS (2008-11-04)
- Создание веб-страниц для различных разрешений м... (2008-11-04)
- Веб-дизайн и анимация (2008-11-04)
- Немного об index.html (2008-11-04)
- Психология дизайна (2008-11-04)
- Что такое стильный web-сайт? (2008-11-04)
- Web дизайн :: Что такое хорошо и что такое плохо (2008-11-04)
- Лево, Право или Центр? (2008-11-04)
- Оптимизация изображений в формате JPG (2008-11-04)
- Альтернативные редакторы Flash (2008-11-04)
- Что же такое web-дизайн? (2008-11-04)
- Сайты для тинейджеров: правила дизайна (2008-11-04)
- Маленькие проблемы больших таблиц - HTML (2008-11-04)
- Особенности web-дизайна (2008-11-04)
- Подсказки и советы для веб-мастеров - Топ 100+ (2008-11-04)
- Единицы измерения CSS (2008-11-04)
- Состав изображений (2008-11-04)
- FLASH - ЧТО МОЖЕТ БЫТЬ ХУЖЕ? (2008-11-04)
- FAQ по графическим форматам файлов (2008-11-04)
- ПО необходимое для web-дизайнера (2008-11-04)
- Должностная инструкция веб-мастера (2008-11-04)
- Стиль Вашего сайта (2008-11-04)
- Стиль Вашего сайта (2008-11-04)
- Orange color: теория и практика (2008-11-04)
- Расположение баннера (2008-11-04)
- Советы "чайникам" (2008-11-04)
- С чего начать (2008-11-04)
- С чего начать (2008-11-04)
- Организация - вот ключ к успеху (2008-11-04)
- Подбор шрифта и верстка текста (2008-11-04)
- Обзор Gif-аниматоров (2008-11-04)
- Каскадные таблицы стилей (преимущества и недост... (2008-11-04)
- Фирменный шрифт (2008-11-04)
- Главные ошибки в web-дизайне (2008-11-04)
- CSS - Для чего нужны таблицы стилей? (2008-11-04)
- Таблицы или слои, что лучше? (2008-11-04)
- О скриптах (2008-11-04)
- Изучаем HTML (2008-11-04)
- Применение нескольких классов к элементу в CSS (2008-11-04)
- Создание сайта с помошью фреймов (2008-11-04)
- Основы работы со слоями в CSS (2008-11-04)
Нет похожих страниц.
Быстрый переход