IE6.0下PNG透明
在IE6.0下PNG无法透明也是个被人嚼乱了的话题,大致的解决方案有HTC、JavaScript和使用GIF或者是PNG8来替换目标图片这么几种。
1,HTC的方式
先获得HTC和JS文件(点这里下载)将提供的ZIP解压,然后把iepngfix.htc和iepngfix_tilebg.js文件放在网站根目录(当然,这并非必然)下。
在你的Html页面中引入刚刚的那个JS文件:<script type="text/javascript" src="iepngfix_tilebg.js"></script>
然后在你的Css页面加入如下代码:img, div, input { behavior: url("iepngfix.htc") }
(请根据你的文件所在目录稍作修改)
在你下载的ZIP中有Example,你只需要将浏览器的JavaScript禁用与否就可以再右边看到区别了(PS:请不要拿除了IE6.0以外的其他浏览器来开玩笑!),这里就不在提供DOME了。
HTC方式的缺陷:对前端性能影响较大。
2,JavaScript的方式
这里又可以分为两种(可能有更多种,只是我不知道而已)
(1)Unit PNG Fix插件(点击这里下载),它的工作原理是利用一个透明的gif图片来解决。
将把clear.gif文件拷贝到你的目录中,并在unitpngfix.js指定clear.gif的地址。
然后在你的页面中添加如下代码:
- <!--[if lt IE 7]>
- <script type="text/javascript" src="unitpngfix.js"></script>
- < ![endif]-->
Unit PNG Fix插件的缺陷:对作为背景图的PNG支持的不是蛮好。
(2)DD_belatedPNG插件(点击这里下载),它的工作是利用VML技术来实现透明色。
同样的,在你的页面中引入此JS文件:
- <!--[if lt IE 7]>
- <script type="text/javascript" src="DD_belatedPNG.js"></script>
- <script type="text/javascript">
- DD_belatedPNG.fix('#id, .classname'); //在这里添加你要处理的对象的类名或者是ID,当然你也可以不必这么麻烦,直接使用DD_belatedPNG.fix('img,a,div,span, li') 这种大的css标签也是不违法的。
- </script>
- < ![endif]-->
PS: VML的全称是Vector Markup Language(矢量可标记语言),但是只有IE支持它,而在Firefox中类似的技术是SVG(可缩放矢量图形(Scalable Vector Graphics,SVG)是基于可扩展标记语言(XML),用于描述二维矢量图形的一种图形格式。),当然IE是不支持SVG的(话说安装插件才可以,比如说Adobe SVG Viewer)。
3,GIF或者是PNG8
这个就不要说了吧?你们都懂的。
posted on 2011-09-14 09:41 I am fine ! 阅读(242) 评论(0) 编辑 收藏 举报