我正在为Retina图像使用以下CSS,它在FF,Chrome,Safari中完美运行,但在IE中则不然。
IE是否有使用背景大小的修复程序 - 如果是这样,我如何使用我当前的代码实现它?
.CSS:
.arrow-big-right {
display: block;
width: 42px;
height: 48px;
margin-bottom: 1.8em;
background-image: url(arrow-big-right.png);
background-repeat: no-repeat;
background-size: 42px 48px;
}
.HTML
<div class="arrow-big-right"></div>
有人可以解释我如何为 IE 解决此问题吗?
非常感谢任何帮助:-)
IE8及更低版本根本不支持background-size
因此您将不得不使用自IE5.5以来一直支持的AlphaImageLoader过滤器:
.arrow-big-right {
display: block;
width: 42px;
height: 48px;
margin-bottom: 1.8em;
background-image: url(arrow-big-right.png);
background-repeat: no-repeat;
background-size: 42px 48px;
filter: progid:DXImageTransform.Microsoft.AlphaImageLoader( src='arrow-big-right.png', sizingMethod='scale');
-ms-filter: "progid:DXImageTransform.Microsoft.AlphaImageLoader( src='arrow-big-right.png', sizingMethod='scale')";
}
或者使用某种通过 CSS 定位 IE 版本的方法,为 IE8 及以下用户应用替代背景。
同样值得注意的是,正如Matt McDonald指出的那样,由于使用这种技术,您可能会看到两个图像。这是由于 IE 筛选器除了添加背景图像(而不是替换)标准背景图像之外,还添加了背景图像。要解决此问题,请使用您喜欢的方法通过 css 定位 IE(这是一种方法,我个人最喜欢的方法),并删除 IE8 及更低版本的标准background-image
。
使用 Paul Irish 博客文章中的第一种技术来执行此操作,您可以使用以下内容:
.arrow-big-right {
display: block;
width: 42px;
height: 48px;
margin-bottom: 1.8em;
background-image: url(arrow-big-right.png);
background-repeat: no-repeat;
background-size: 42px 48px;
filter: progid:DXImageTransform.Microsoft.AlphaImageLoader( src='arrow-big-right.png', sizingMethod='scale');
-ms-filter: "progid:DXImageTransform.Microsoft.AlphaImageLoader( src='arrow-big-right.png', sizingMethod='scale')";
}
.ie6 .arrow-big-right,
.ie7 .arrow-big-right,
.ie8 .arrow-big-right {
background-image: none;
}