Баннерная сеть

Личный кабинет

Имя

Пароль

Запомнить меня


Забыли пароль?
Зарегистрироваться

  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 лента комментариев этой записи.
Средняя оценка участников (от 1 до 10): Пока не оценено   
Проголосовавших: 0
Быстрый переход
  • Company
  • Overview
  • Facts and Figures
  • Why Us
  • Testimonials
  • Careers
  • Capabilities
  • Technology Centers
  • Microsoft .NET
  • Java EE
  • PHP
  • AJAX
  • Skill Set
  • Domain Expertise
  • Web 2.0
  • Rich Internet Applications
  • Business Continuity
  • Quality Management
  • Methodology
  • Services
  • Advanced Web Development
  • Web Application Development
  • Web and Enterprise Portal Development
  • Website Design and Development
  • Web-based Database Programming
  • Web-enabling Legacy Applications
  • Opensource Software Customization
  • Business Application Development
  • Content and Document Management
  • Secure Intranets / Extranets
  • Customer Relationship Management
  • Workflow Management
  • Supply Chain Management
  • Interactive Learning
  • Independent QA and Testing
  • Application Security Consulting
  • Graphic Design / Multimedia
  • Maintenance and Support
  • Outsourcing
  • Outsourcing Overview
  • Dedicated Teams
  • Security and IP Protection
  • Engagement Models
  • Portfolio
  • By Business Domain
  • Corporate / Info Websites
  • Communities and Networks
  • B2B / B2C Internet Portals
  • Retail / Ecommerce
  • Media Distribution
  • Workflow Management
  • Customer Management
  • Enterprise Collaboration
  • Supply Chain Management
  • eLearning / Online Training
  • By Technology Focus
  • Microsoft .NET
  • Java EE
  • PHP
  • By Solution Type
  • Websites
  • Web Applications
  • Enterprise Solutions
  • Contact
  • Contact Form
  • Get Free Evaluation
  • Call Me Back
  • Contact Info
  • Map