УСЛОВИЕ CSS различают IE6 и IE7 - PullRequest
0 голосов
/ 12 июля 2009

я хочу объявить стиль, отличный от ie6 и ie7, но мое состояние в CSS распознается IE7 как IE6. Я использую XP и Explorer 7. Этот код я использую:

<!--[if !IE]>

#mainDiv{text-align:-moz-center;}

#skyBanner {top:0px;left:0px; position:fixed;visibility:hidden;}

<![endif]-->     

<!--[if lt IE 7]>

body > #skyBanner {  position: fixed;}

#skyBanner {position:absolute;visibility:hidden;

left: expression( ( 0 + ( ignoreMe2 = document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft ) ) + 'px' );

top: expression( ( 0 + ( ignoreMe = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop ) ) + 'px' );

}

<![endif]-->

<!--[if IE 7]>

#skyBanner {position:fixed;visibility:hidden;

}    
<![endif]--> 

в чем моя ошибка?

Ответы [ 3 ]

3 голосов
/ 12 июля 2009

Ваш !IE неправильно прокомментирован, и вам не хватает тегов стиля. Если это именно так, как он существует в вашем HTML, то это ваша проблема. Если это в файле CSS, вы не можете использовать условные комментарии в этом месте.

Исправлено:

<!--[if !IE]>-->
<style type="text/css" media="screen">
    #mainDiv {text-align:-moz-center;}
    #skyBanner {top:0px;left:0px; position:fixed;visibility:hidden;}
</style>
<!--<![endif]-->

<!--[if lt IE 7]>
<style type="text/css" media="screen">
    body > #skyBanner {  position: fixed;}
    #skyBanner {position:absolute;visibility:hidden;
    left: expression( ( 0 + ( ignoreMe2 = document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft ) ) + 'px');
    top: expression( ( 0 + ( ignoreMe = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop ) ) + 'px' );
    }
</style>
<![endif]-->

<!--[if IE 7]>
<style type="text/css" media="screen">
    #skyBanner {position:fixed;visibility:hidden;}
</style>
<![endif]-->

Опять же, как написано в настоящее время, браузер не видит код !IE.

Я также не уверен, что вы правильно написали другие условия. У вас "body > #skyBanner {position: fixed;}" под условием "if lt IE 7", но IE6 и ниже не поддерживают этот селектор CSS, насколько мне известно.

Таким образом, любое количество проблем, которые я описал, может привести к вашим проблемам с IE6 и IE7.

3 голосов
/ 12 июля 2009

Вы не можете использовать условные комментарии в CSS. Только в HTML. Таким образом, вы должны поместить объявления для разных браузеров в разные файлы и условно прокомментировать их <link>.

Так что еще что-то вроде

<html>
  <head>
    <!--[if !IE]>
      <link rel="stylesheet" type="text/css" href="style_non_ie.css">
    <![endif]-->
    ...
  </head>
</html>
0 голосов
/ 12 июля 2009

Вы должны сделать это немного по-другому. Используйте комментарии и вложите ссылки в CSS-файлы браузера. Так должно работать:

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

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

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

Вы также можете использовать <style> теги вместо ссылок, но это плохой способ сделать это.

...