Html 我不希望背景图片显示在IE中。我该怎么做?

Html 我不希望背景图片显示在IE中。我该怎么做?,html,css,internet-explorer,background,Html,Css,Internet Explorer,Background,这是CSS,我不希望背景图片显示在IE中。相反,我只想显示背景色。我该怎么做 html, body { margin:0; padding: 0; background: #a9ac41; background-image: url("background.png"); background-repeat: no-repeat; background-size: cover; margin:0; padding: 0; }

这是CSS,我不希望背景图片显示在IE中。相反,我只想显示背景色。我该怎么做

html, body {    
  margin:0;
  padding: 0;    
  background: #a9ac41;
  background-image: url("background.png");    
  background-repeat: no-repeat;
  background-size: cover;    
  margin:0;
  padding: 0;     
}

使用
条件语句

<!--[if IE]>
Place IE specific content.
<![endif]--> 

如果是特定于版本的,您可以这样混合代码-

<!--[if lt IE 8]>
Place content for IE lower than 8
<![endif]--> 

创建了一个经过粗略测试的代码,并签入IE 9-

<!--[if gte IE 8]>
<style>
html, body {       
  background: #a9ac41;
  background-image: url("http://dummyimage.com/600x400/000/fff.png");    
  background-repeat: no-repeat;
  background-size: cover;    
  margin:0;
  padding: 0;     
}
</style>
<![endif]--> 

<html>
<body>
<body>
</body>
</html>

编辑

条件语句不适用于IE10,因此您可以通过
媒体查询来管理它


示例线程-

条件样式表是您所需要的。 通过使用下面的代码,您可以设置仅在IE中使用的样式表,在该样式表中,您可以为主体设置替代样式

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

根据您要针对的IE版本,您可以使用条件注释(和/或仅适用于IE的样式表):


请注意,这在IE10中不起作用。

有很多不同的方法可以做到这一点,这实际上取决于您对页面的其他操作。一种简单的方法是在
标记中使用以下HTML


为此替换html的标记
html

<!-- paulirish.com/2008/conditional-stylesheets-vs-css-hacks-answer-neither/ -->
<!--[if lt IE 7]> <html class="no-js lt-ie9 lt-ie8 lt-ie7" lang="en"> <![endif]-->
<!--[if IE 7]>    <html class="no-js lt-ie9 lt-ie8" lang="en"> <![endif]-->
<!--[if IE 8]>    <html class="no-js lt-ie9" lang="en"> <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js" lang="en"> <!--<![endif]-->

注意:IE10不支持条件注释,因为此方法在将此代码复制并粘贴到html中

   <!--[if IE]>
    <stye>
      html, body {    
        background-image: none; 
      }
    </style>
   <![endif]-->

我猜这里的问题是背景大小。IE8和更早版本不支持它,所以你在IE8中看到你的图像被弄乱了,你想通过恢复到普通背景来解决它

首先,我应该告诉您,IE9和更高版本支持
背景大小
,因此您不需要对所有IE版本进行全面更改。您只需要解决IE8和更早版本中缺乏支持的问题

以下是您的一些选择:

  • 纯CSS解决方案:
    您可以利用CSS处理未知属性的方式,为不支持
    背景大小的浏览器提供纯CSS回退,方法是以速记
    背景
    样式将大小指定为参数:

    background: #a9ac41;
    background: url("bgimage.png") cover;
    
    IE8将完全忽略第二个
    背景
    ,因为它不理解
    封面
    。其他浏览器会忽略第一个,因为第二个浏览器会覆盖它。问题解决:所有浏览器都有一个工作背景

  • 功能检测解决方案:
    您可以使用一个工具来测试
    背景大小的浏览器支持,然后使用Javascript相应地更改页面(例如,如果不支持,则加载不同的样式表)

  • 过滤器
    解决方案:

    尽管IE8不支持
    背景大小
    ,但可以使用
    -ms filter
    属性来模拟它,并取得一定程度的成功。您将使用如下代码:

    -ms-filter: "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='path_relative_to_the_HTML_file', sizingMethod='scale')";
    
    范例

  • Polyfill溶液:
    有一些“polyfill”脚本可用于在旧IE版本中实现一些缺少的CSS功能,包括
    背景大小
    。在这种情况下,我推荐的是。按照css3pie网站上的说明操作,即使在非常旧的IE版本中,您也可以使用标准的
    背景大小


希望能有所帮助。

回答这个问题显然有多种方法,一些好方法已经提到了。下面是我最常用的另一种方法,它需要更少的字节:

要仅针对Internet Explorer,请在要针对的代码前面加一个“*”,即使用上面的示例,使背景不显示在中,即使用*类似于:

    html, body {    
    margin:0;
    padding: 0;    
    background: #a9ac41;
   *background-image: none;  
    background-image: url("background.png");    
    background-repeat: no-repeat;
    background-size: cover;    
    margin:0;
如果它不起作用,很可能是你的规则相互冲突。在这种情况下,请使用“!important”,例如:

    *background-image: none !important;

您已经指定了两次
margin
padding
。(这不会引起问题,但也不会有任何帮助)问题是“你想影响哪个IE版本,为什么?”如果你想对所有IE版本都这样做,那么我会反对。如果您试图处理IE8不支持背景大小的问题,那么可能有办法解决。但无论哪种方式,答案都会根据您想要的IE版本而有所不同,因此请具体说明。注意,如果他希望所有IE版本都受到影响,那么这将在IE10中失败,因为它不支持条件注释。注意,如果他希望所有IE版本都受到影响,那么这将在IE10中失败,因为它不支持有条件的评论。我不知道,谢谢!有没有一种替代方案在IE10中起作用?不是直接的等效方案——微软正在共同努力使IE符合标准,所以他们正在删除像这样的非标准内容。但另一方面,这也意味着IE10通常非常擅长与代码兼容,因此很少需要这样的技巧。如果有必要,您应该使用功能检测(例如使用Modernizer库),而不是浏览器检测。请注意,如果他希望所有IE版本都受到影响,那么在IE10中这将失败,因为它不支持条件注释。请注意,条件注释功能在IE10中不可用,因此,这个技巧在IE10(或未来的IE版本)中不起作用。@Spudley对于IE10的特定情况,您可以运行媒体查询。是的,也有检测IE10的方法。不过,老实说,最好是进行特征检测,因为IE10(甚至IE9)对OP的背景图像没有任何问题。这里所有提供有条件评论以检测IE的答案都是错误的。我猜OP并没有真正提出正确的问题,但在这种情况下,阅读字里行间的内容,找出实际问题是什么,而不是给出正确的答案,会有所帮助
    *background-image: none !important;