如何在IE中使背景尺寸工作?


188

有没有已知的方法可以使background-sizeIE中的CSS样式起作用?


1
您想获得什么效果?
ZippyV

@ZippV我有一个约250像素宽的div。但背景图片为300px宽。我希望背景图像完全适合(background-size:100%),因此不会被截断。然后,:hover我想将背景尺寸更改为全300px宽度(background-size:auto),以创建缩放的幻觉
JD Isaacks

1
通过使用img标签,您可以实现相同的效果。如果您需要任何其他内容,请使用z-index。
ZippyV 2010年

1
如果Dan的解决方法对您有用,则@John考虑更改接受的答案!
Pekka

@ZippyV IMG标签有时具有不需要的副作用,例如可以选择或右键单击它。这些有时还可以,有时不可以。
peterh-恢复莫妮卡2014年

Answers:


312

有点晚了,但这也可能有用。有一个适用于IE 5.5+的IE过滤器,您可以应用:

filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(
src='images/logo.gif',
sizingMethod='scale');

-ms-filter: "progid:DXImageTransform.Microsoft.AlphaImageLoader(
src='images/logo.gif',
sizingMethod='scale')";

但是,这会缩放整个图像以适合分配的区域,因此,如果您使用的是精灵,这可能会引起问题。

规范:AlphaImageLoader筛选器@microsoft


12
我想知道为什么MS不只是使用CSS来实现该功能。非常感谢!
马丁·安德森

2
哪些IE版本支持此功能?
2012年

8
如果您在我们定义此元素的元素内使用链接和按钮,则这些链接和按钮将不起作用。有人知道解决此问题的方法吗?
rubyprince

2
我必须position: relative; z-index: 999在此类div中添加一个按钮作为输入
rubyprince 2012年

10
但是,缩放方法不会保持比例。因此,最好使元素与图像具有相同的比例。
伊夫·范布罗霍芬


21

多亏了这篇文章,我对跨浏览器的满意程度完全是:

<style>
    .backgroundpic {
        background-image: url('img/home.jpg');
        background-size: cover;
        filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(
        src='img/home.jpg',
        sizingMethod='scale');
    }
</style>

自从我处理这段代码以来已经很久了,但是我想添加更多的浏览器兼容性,因此我将其附加到CSS上以提高浏览器的兼容性:

-webkit-background-size: cover;
-moz-background-size: cover;
-o-background-size: cover;
background-size: cover;

@ Gaurav123试试-webkit-background-size: cover; -moz-background-size: cover; -o-background-size: cover; background-size: cover;
honk31

5
这使我的ie8可以显示两次背景图像-一次显示比例缩放的图像,第二次显示未缩放的大背景。
arekk

ie7:看起来不错,但不能再单击链接。(为什么ie7?政府网站的更新速度很慢)
罗比·马修斯

5

甚至以后,但这也可能有用。有一个jQuery-backstretch-plugin可以用作背景尺寸的塑料填充:封面。我猜想一定有可能(并且相当简单)使用jQuery来获取css-background-url属性并将其提供给jQuery-backstretch插件。优良作法是使用modernizr测试background-size-support并将此插件用作备用。

这里在SO上提到了backstretch-plugin .jQuery-backstretch-plugin-site在这里

您可以通过类似的方式制作一个jQuery插件或脚本,以使背景尺寸在您的情况下(背景尺寸:100%)和IE8-都能正常工作。因此,回答您的问题:是的,但是有一种方法,但是atm没有即插即用的解决方案(即,您必须自己编写一些代码)。

(免责声明:我没有对backstretch-plugin进行彻底检查,但似乎和background-size:cover一样)


5

有一个很好的polyfilllouisremi / background-size-polyfill

引用文档:

将backgroundsize.min.htc以及将发送IE所需的mime类型的.htaccess上载到您的网站(仅Apache-它内置在nginx,node和IIS中)。

在CSS中使用background-size的任何地方,都添加对此文件的引用。

.selector { 
    background-size: cover;
    /* The url is relative to the document, not to the css file! */
    /* Prefer absolute urls to avoid confusion. */
    -ms-behavior: url(/backgroundsize.min.htc);
}

这个polyfill可以正常工作。background-size:覆盖或包含在IE8中。没有糊涂,没有大惊小怪。
jimlongo 2015年

此方法同时支持containcover。它包含5.7KB,不是很差,因为它将在一个网络数据包中传输。
SMMousavi '16

2

在IE11 Windows 7中,这对我有用,

background-size: 100% 100%;


0

我尝试使用以下脚本-

.selector { 
background-image: url("img/image.jpg");
background-size: 100%;
-webkit-background-size: cover;
-moz-background-size: cover;
-o-background-size: cover;
background-repeat: no-repeat;
}

它为我工作!


什么版本?
nihiser
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.