Консолидация вызовов CSS IE - PullRequest
1 голос
/ 24 января 2012

Есть ли способ вызвать условные выражения IE из CSS? Я хочу избежать вызова длинной строки IE CSS-файлов из моего кода.

<!--[if IE 7]>
<link href="ie7.css" rel="stylesheet" type="text/css" />
<![endif]-->
<!--[if IE 8]>
<link href="ie8.css" rel="stylesheet" type="text/css" />
<![endif]-->
<!--[if gt IE 8]>
<link href="ie-gt-8.css" rel="stylesheet" type="text/css" />
<![endif]-->

и хотел бы иметь один звонок

    <!--[if IE]>
    <link href="ie.css" rel="stylesheet" type="text/css" />
<![endif]-->

и иметь условия в файле CSS. Это возможно, или Пол Ирландский путь?

Я пытался применить «расширенные правила», предложенные в этой статье

#column_right {
float:left;
width:250px;
margin-left:-250px;
[if IE 6] ie6: 100%;
[if lt IE 6] lt-ie6: 100%;
[if lte IE 6] lte-ie6: 100%;
[if ! lte IE 6] not-lte-ie6: 100%;
}
#footer {
clear: left;
width: 100%;
[if IE 5.0] padding: 10px 0px;
[if IE 5.5] margin-bottom: 40px;
}

[if IE 5] .box {
width: 200px;
padding: 100px;
margin: 100px;
}

но это не работает для меня. Я попробовал что-то простое, например

[if IE 7] background-color: red;
[if IE 8] background-color: yellow;

Ответы [ 3 ]

3 голосов
/ 24 января 2012

Используйте условный код для добавления класса в элемент HTML. Затем используйте этот класс для выбора элементов только для версии ie.

<!doctype html>

<!--[if lt IE 7 ]> <html class="no-js ie" lang="en"> <![endif]-->
<!--[if IE 7 ]>    <html class="no-js ie7" lang="en"> <![endif]-->
<!--[if IE 8 ]>    <html class="no-js ie8" lang="en"> <![endif]-->
<!--[if (gte IE 9)|!(IE)]><!--> <html class="no-js" lang="en"> <!--<![endif]-->

.ie8 body {width: 98%}
.ie7 body {width: 100%}
.ie body {width: 50%}

В ie8 элемент body будет иметь ширину 98%, т.е. ie7, ширину 100%, а в IE6 и ниже - 50%.

0 голосов
/ 24 января 2012

Вы также можете попробовать динамически загружать CSS на стороне сервера. Получите пользовательский агент из объекта запроса, если он использует IE версии x, добавьте CSS-файлы 1, 2, 3, объединенные вместе. Просто убедитесь, что MIME-тип ответа - CSS или обычный текст ...

0 голосов
/ 24 января 2012

Нет. Это невозможно. Но возможно (иногда) кодировать все IE и консолидировать ваш код. Условных комментариев в IE не существует, но есть хаки однако Я бы не рекомендовал их, никогда!

...