CSS:跨浏览器复合背景

CSS:跨浏览器复合背景,第1张

概述最近发现了一个让 IE6~8 也能呈现 CSS3 Multiple Backgrounds(复合背景)的方法,当时我小小的震惊了一下。看来 IE6 曾经的辉煌不单是微软的捆绑和网银的支持造成的,在当年,它强大的功能也令其它浏览器难以追赶。废话不说了,先说说 CSS3 里的标准做法。在 CSS3 标准里,Background 属性被赋予…

最近发现了一个让 ie6~8 也能呈现 CSS3 Multiple Backgrounds(复合背景)的方法,当时我小小的震惊了一下。看来 ie6 曾经的辉煌不单是微软的捆绑和网银的支持造成的,在当年,它强大的功能也令其它浏览器难以追赶。废话不说了,先说说 CSS3 里的标准做法。

在 CSS3 标准里,Background 属性被赋予更加强大的功能,在 CSS2.1 的基础上,我们可以对一个对象同时使用多个背景图片。例如如下的样式:

#mutiple-bg {
background-image: url(top.png),url(mIDdle.png),url(bottom.png);
}

添加符合背景图片的时候先从最顶层开始添加,按从高到低的顺序写样式。大家可以看这个 Demo。可以尝试用 IE 打开看看效果。

用 IE 打开过 Demo 的同学可以发现 IE 也能显示复合背景了,如果你查看过 DEMO 的源码,你可以发现我是通过 IE 滤镜来实现的。方法是先用标准的 CSS 加一个底层的背景,再通过滤镜添加上一层的背景。整个 Demo 的样式如下:

<style>
#demo {
wIDth: 410px;
height: 290px;
border: #CCC dotted 1px;
margin: 120px auto 0;
background: url(anti-ie6-logo.png) left top no-repeat,url(bg.jpg) center top repeat; /* CSS3 */
}
</style>
<!--[if IE]>
<style>
#demo {
background: transparent url(bg.jpg) center top no-repeat;
filter: progID:DXImagetransform.Microsoft.AlphaImageLoader (src='anti-ie6-logo.png',sizingMethod='crop'); /* ie6~7 */
-ms-filter: "progID:DXImagetransform.Microsoft.AlphaImageLoader(src='anti-ie6-logo.png',sizingMethod='crop')"; /* ie8 */
}
</style>
< ![endif]-->IE 的不足

看到当年 IE 的强大了吧?最早开始支持复合背景的 Safari 3.1 诞生以前,ie6 早就可以通过滤镜制作出这种效果了。但IE也存在明显的不足:

本例使用的滤镜没有提供调整图片位置的参数,至少我在 MSDN 的技术文档里没找到。 目前 IE 只能制作出两层复合背景。

本文权当开开眼界了,为了更快地拥抱 CSS3 ,请在不使用网银和支付宝时弃用 IE。

原文:http://blog.imbolo.com/cross-browser-css-mutiple-background/

总结

以上是内存溢出为你收集整理的CSS:跨浏览器复合背景全部内容,希望文章能够帮你解决CSS:跨浏览器复合背景所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1025180.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-23
下一篇 2022-05-23

发表评论

登录后才能评论

评论列表(0条)

保存