在向IE发送特定样式表时遇到问题

时间:2012-02-05 21:15:04

标签: internet-explorer html5 css3

无论我做什么,IE都不会显示我的网站。我不确定我做错了什么以及如何解决这个问题。如果有人可以提供帮助,请。我已经被困了好几天了

我正在创建我的第一个HTML5网站,当然还有新领域还有更多需要学习的地方。 My website here适用于我目前所知的所有浏览器和设备,并且当屏幕处于特定大小时,我正在使用CSS3媒体查询来发送我想要的信息。

现在IE当然不支持这个功能所以我使用条件注释来查看它是否是IE以及是否使用我的ie.css样式。但是我必须把它放错了,因为它不工作(页面上没有任何内容然后崩溃)或者它在全尺寸窗口上显示移动样式!我曾尝试使用respond.js文件和css3-mediaqueries.js文件,但它们并没有为我工作。这是阻止我使用这个网站的最后一件事,在努力解决为什么它不起作用之后,我迫切希望找到一个解决方案。

这是我脑子的底部。

<link rel="stylesheet" href="css/style-fluid.css" />
<!--[if IE]>
<link rel="stylesheet" href="css/ie.css" />

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

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

<script src="js/libs/modernizr-2.0.6.min.js"></script>
</head>

所以我不确定我做错了什么。我想暂时使用媒体查询,我知道有一种方法可以使用它们,只是告诉IE使用这个样式表吗?

感谢任何帮助。

9 个答案:

答案 0 :(得分:2)

起初我虽然它是你的头顶...当你缩小你有这个奇怪的评论标记,我认为我造成了问题,而不是正确地渲染你的后期IF IE。改变
 <!--[if gt IE 8]><!--> <html class="no-js" lang="en"> <!--<![endif]-->
 <!--[if gt IE 8]> <html class="no-js" lang="en"> <![endif]-->

但我一直在不同的服务器上测试它,这似乎并没有打扰它。 你会考虑将这个服务器作为问题运行吗?好像你尝试了很多东西......

尝试我的第一个建议,并在ie中查看http://tinyurl.com/87maskt而不是.. [我只是从源头和参考资料中获取c&amp; p。如果你愿意,你可以给我发送实际的首页代码进行测试。]

祝你好运!

答案 1 :(得分:1)

我认为这个问题存在,因为你的css类型没有位置。您应该将类​​型设置为text/css

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

答案 2 :(得分:0)

我认为问题不在于样式表..它是你的html标签......

<!--[if lt IE 7]> <html class="ie" lang="en"> <![endif]-->
<!--[if IE 7]>    <html class="ie" lang="en"> <![endif]-->
<!--[if IE 8]>    <html class="ie" lang="en"> <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js" lang="en"> <!--<![endif]-->

我可以问为什么????这真的没必要。

答案 3 :(得分:0)

试试这个:

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

答案 4 :(得分:0)

想想我明白了。从ie.css中删除@media打印部分。

答案 5 :(得分:0)

你可以做一些事情:

  1. 更新HTML标记以使用HTML5样板中的条件注释。 Scott的回答提供了代码段:https://stackoverflow.com/a/9153257/230649
  2. 将respond.js添加到您的项目中以获得对IE中媒体查询的支持:https://github.com/scottjehl/Respond
  3. 如果respond.js有效,你就不用担心你的IE样式表了,你可以一起避免它。

    现在这里是踢球者:你的IE样式表中包含了HTML5样板重置。你需要摆脱这个。您应该在IE特定样式表中包含的唯一内容是您要对文本大小进行的小调整等。

    但是,如果respond.js支持您的媒体查询,您可能根本不需要使用这个特定于IE的样式表。我尝试删除IE特定的样式表并实现respond.js来解决您的问题。

答案 6 :(得分:0)

<!--[if lt IE **7**]> <html class="no-js ie6 oldie" lang="en"> <![endif]-->
<!--[if IE 7]>    <html class="no-js ie7 oldie" lang="en"> <![endif]-->
<!--[if IE 8]>    <html class="no-js ie8 oldie" lang="en"> <![endif]-->
<!--[if gt IE 8]>**<!-->** <html class="no-js" lang="en"> <!--<![endif]-->

从上一个if语句中删除注释,并将第一个7 if语句更改为6以及删除8的双if语句

答案 7 :(得分:0)

尝试将class=标记中的<html>属性移动到<body>标记,然后更改css以针对<body>

进行选择
<!--[if lt IE 9]> <body class="ie" lang="en"> <![endif]-->
<!--[if gt IE 8]> <body class="no-js" lang="en"> <!--<![endif]-->

答案 8 :(得分:0)

只是一个想法......为什么不使用Javascript来查明他们是否使用Internet Explorer,如果是,则将它们重定向到导入ie.css的另一个主页:

<强>的index.php

<link rel="stylesheet" href="css/style-fluid.css" />

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function(){
    if (navigator.appName == 'Microsoft Internet Explorer')
    {
        parent.location = "ie.php";
    }
}

</script>  

<强> ie.php

<link rel="stylesheet" href="css/ie.css" />

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function(){
    if !(navigator.appName == 'Microsoft Internet Explorer')
    {
        parent.location = "index.php";
    }
}
</script> 

问题解决了!希望这有帮助!