Можем ли мы использовать вот так <body class = "all" <! - [if IE 7]> class = "ie" <! [Endif] ->> - PullRequest
3 голосов
/ 16 июня 2010

Можем ли мы использовать вот так <body class="all" <!--[if IE 7]>class="ie"<![endif]--> >?

Я хочу сохранить все CSS в одном файле.

Ответы [ 4 ]

2 голосов
/ 16 июня 2010

Вы можете использовать:

<body class="all">
  <!--[if ie]>
    <div class="ieOnly">
  <![endif]-->

<div id="content">

<p>...</p>

</div>

  <!--[if ie]>
    </div>
  <![endif]-->
</body>

Таким образом, селектор css для устранения недостатков / различий в IE более специфичен, чем обычный

#content {/* for non-IE browsers */}

body.all .ieOnly #content {/* for IE */}

... и должен переопределять «нормальные» правила #content и никогда не будет применяться браузерами не IE, так как в селекторе есть элемент .ieOnly, который в противном случае является «невидимым» для них.

Тем не менее, строго говоря, нет; Вы не можете делать то, что предлагаете в своем вопросе, хотя существуют альтернативные подходы.

2 голосов
/ 16 июня 2010

Краткий ответ: Нет (по крайней мере, не в строке), но зачем это нужно?:)

Только что определил стиль body { } в условной таблице стилей IE, например:

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

А внутри:

body { /* or body.all { */
  background: pink; /* Pink is pretty!, or green, whatever */
}
1 голос
/ 16 июня 2010

Если вы хотите добавить класс к телу на основе браузера без хаков, вам нужно будет использовать серверный код и анализировать UA.

1 голос
/ 16 июня 2010

Нет, вы не можете специально закомментировать атрибут даже с условными комментариями IE. Но могут быть и другие способы выразить это.

...