Создание стилей только для IE
9 февраля 2010 года | Вёрстка, Мысли

В продолжении статьи про назойливые баги в IE6 хотелось бы дополнить статью полезной информацией, которая поможет решить проблемы, или просто посодействует этому.
Если вы верстали хотя бы несколько страниц, то наверное ломали себе голову, при работе с браузером IE (Internet Explorer). Но, если это ваша работа, или просто увлечение, вы должны уметь и знать как решать проблемы связанные с этим браузером.
Так как использование обычных хаков в стилях, могут привести к неизвестным последствиям. Потому что, неизвестно как на них отреагируют новые версии браузеров. Поэтому, я считаю, решение проблемы, это использование условных комментариев.
Движек trident, который использует IE, предоставляет возможность использования условных комментариев. С помощью условий, можно указать как одну так и несколько версий IE. Это нужно, чтобы указать какие браузеры среагируют на содержимое такого комментария. То есть, например, можно указать, все версии ниже IE7.
Зачем использовать условные стили?
- Вы отделяете все проблемы, которые нужно решить.
- Ваши стили не будут содержать хаков.
- Основной стиль будет чистым и валидным.
- Этот метод вполне приемлемый и одобренный Microsoft.
А ещё хотелось бы добавить, что условные комментарии предназначены не только для стилей. Вы также можете подгружать Javascript-файлы, или вообще выводить сообщения, предназначенные только для пользователей IE.
Теория
Обычное применение условных комментариев, это описание в блоке <head> вашей HTML разметки, тега <link> — отдельного файла, подходящего под условие.
Теперь непосредственно, правила оформления или просто синтаксис. Открываются и закрываются теги условных комментариев, по типу как и обычные комментарии описанные в стандарте (<!–– comment ––>).
Затем в квадратных скобках записываем if и IE. Для условия этого уже достаточно. Перед закрывающим тегом также добавляем конец условия: <![endif]––>. Но, помимо точных условий, есть и строгие, и не строгие соответствия. Перечислю все:
- ! — логическое отрицание (!IE — что означает не IE).
- gt — (от greater than) больше чем.
- gte — (от greater than or equal) больше чем или соответствует.
- lt — (от less than) меньше чем.
- lte — (от less than or equal) меньше чем или соответствует.
С помощью этих условий и можно сформировать нужное вам условие.
Примеры использования
А теперь рассмотрю всевозможные примеры, так как визуально всегда понятней:
Для всех версий IE:
<link rel="stylesheet" type="text/css" href="all-ie-only.css" />
< ![endif]-->
Для всех кроме IE:
<link rel="stylesheet" type="text/css" href="not-ie.css" />
< ![endif]-->
Только для IE7:
<link rel="stylesheet" type="text/css" href="ie7.css" />
< ![endif]-->
Только для IE6:
<link rel="stylesheet" type="text/css" href="ie6.css" />
< ![endif]-->
Только для IE5:
<link rel="stylesheet" type="text/css" href="ie5.css" />
< ![endif]-->
Только для IE5.5:
<link rel="stylesheet" type="text/css" href="ie55.css" />
< ![endif]-->
Только для IE6 и ниже:
<link rel="stylesheet" type="text/css" href="ie6-and-down.css" />
< ![endif]-->
<link rel="stylesheet" type="text/css" href="ie6-and-down.css" />
< ![endif]-->
Только для IE7 и ниже:
<link rel="stylesheet" type="text/css" href="ie7-and-down.css" />
< ![endif]-->
<link rel="stylesheet" type="text/css" href="ie7-and-down.css" />
< ![endif]-->
Только для IE8 и ниже:
<link rel="stylesheet" type="text/css" href="ie8-and-down.css" />
< ![endif]-->
<link rel="stylesheet" type="text/css" href="ie8-and-down.css" />
< ![endif]-->
Только для IE6 и выше:
<link rel="stylesheet" type="text/css" href="ie6-and-up.css" />
< ![endif]-->
<link rel="stylesheet" type="text/css" href="ie6-and-up.css" />
< ![endif]-->
Только для IE7 и выше:
<link rel="stylesheet" type="text/css" href="ie7-and-up.css" />
< ![endif]-->
<link rel="stylesheet" type="text/css" href="ie7-and-up.css" />
< ![endif]-->
Только для IE8 и выше:
<link rel="stylesheet" type="text/css" href="ie8-and-up.css" />
< ![endif]-->
<link rel="stylesheet" type="text/css" href="ie8-and-up.css" />
< ![endif]-->
Универсальный стиль для IE6
Поддержка правильного отображения страниц для браузеров IE6 и ниже, это всегда трудоемкая задача. И в наши дни от поддержки этого «старья» отказываются многие, в том числе сайты крупных компаний (например Google) так и правительственные сайты. Но существует лучшее решение, чем просто плюнуть на поддержку браузера IE6- (IE6 и ниже), а поддерживать только версии начиная с IE7+. Вот для этого и придумали универсальные исправления для IE6-.
<link rel="stylesheet" type="text/css" media="screen, projection" href="REGULAR-STYLESHEET.css" />
<!--<![endif]-->
<!--[if gte IE 7]>
<link rel="stylesheet" type="text/css" media="screen, projection" href="REGULAR-STYLESHEET.css" />
< ![endif]-->
<!--[if lte IE 6]>
<link rel="stylesheet" type="text/css" media="screen, projection" href="http://universal-ie6-css.googlecode.com/files/ie6.0.3.css" />
< ![endif]-->
Хаки
Ну и решил добавить несколько хаков CSS, на любителя.
Только для IE7:
height: 300px;
}
Все кроме IE7:
_height: 300px;
}
Спрятать для IE6 и младших версий:
height/**/: 300px;
}
height: 300px;
}
Только IE7 и младшие:
//height: 300px;
}
*color:red;
}
И совсем раритет, только IE5.5 и ниже:
\\width:100px;
}
Только IE8:
height/*\**/:25px;
}
Аргумент против условных комментариев
Мы не должны в них нуждаться. Они противоречат веб-стандартам.
Аргумент за использование условных комментариев
Мы в них ещё нуждаемся.
Финальные мысли
В любом случае, есть такие ситуации в которых пользователи просто не могут обновить себе версию браузера. И давайте пока не будет полностью игнорировать поддержку старых версий IE. Можно просто привести страницу в приемлемый вид, пусть даже не совсем соответствующий изначальному макету.
Какие у вас мысли по поводу поддержки старых браузеров? Жду комментариев, обсудим.
- http://medialworld.com sad
- http://medialworld.com sad
- divbyzero
- kolibri
- http://twitter.com/proglammer proglammer
