HTML5技术

让ie6对png透明图片支持起来 - SUperman-苏智敏(3)

字号+ 作者:H5之家 来源:H5之家 2015-12-09 11:55 我要评论( )

此时ie6下png-8透明背景图片能正常显示了,且不只是针对ie6,对其他浏览器也是用,好像很好用,但是png-8只有256色啊,色彩不丰富,而现在广泛使用的png-24有2^24=1678万色,能展示很丰富的色彩, 而且没有锯齿 。

此时ie6下png-8透明背景图片能正常显示了,且不只是针对ie6,对其他浏览器也是用,好像很好用,但是png-8只有256色啊,色彩不丰富,而现在广泛使用的png-24有2^24=1678万色,能展示很丰富的色彩,而且没有锯齿。所以如果原图色彩很丰富,那么只能转换为png-8图片作为降级的方法用到ie6上。还有个问题是,杂边处理的前提是图片覆盖区域的背景色是单色,如果是多种颜色,那么总会出现锯齿了。

 

我们需要寻找更灵活的方法,ie有专用的AlphaImageLoader过滤器,可以让ie6支持png-24的透明背景,而不是将透明色显示为灰色,这里要用到ie hack技巧,将background-image设置为none去掉背景图片,在使用滤镜加载图片。AlphaImageLoader过滤器中的参数src指向要显示的png-24图片,sizingMethod有3个可选值:crop:直接放置到容器中,图片左上角对齐容器左上角,image:让容器的边缘调整至包住整个图片,scale:让图片调整至充满整个容器。

.gif{ width: 400px; height:200px; background: #f00 url(ie6.png) no-repeat; *background-image:none; filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='png_24.png',sizingMethod=crop); }

 

效果妥妥的:

 

不过需要注意的是浏览器会有提示,需要用户点击允许才能运行滤镜效果,否则不仅没有滤镜效果,而且由于取消了背景图片,图片压根就看不到(只看到红色,字是见不到的,图略):

 

如果觉得一个个图片添加滤镜效果麻烦,还可以用js写个函数一次性将页面所有png图片抓出来添加ie滤镜效果。不过用户喜欢禁掉js脚本的话,就呵呵了。

 

 

还有一种方法是利用ie专有的css扩展--行为,引用.htc文件来修复png透明背景问题(也有使用.htc文件来解决圆角框的):

div{ behavior:url(iepngfix.htc); }

 

这里有个介绍这种技术的网站:,也可以直接下载demo文件,详细使用流程在demo页面有引导:。

未引用htc文件,可以看到背景灰蓝色:

 

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • 浓缩的才是精华:浅析GIF格式图片的存储和压缩 - 腾讯云技术社区

    浓缩的才是精华:浅析GIF格式图片的存储和压缩 - 腾讯云技术社区

    2017-04-07 15:08

  • css rgba/hsla知识点讲解及半透明边框 - 不忘初心8090

    css rgba/hsla知识点讲解及半透明边框 - 不忘初心8090

    2017-03-27 08:00

  • HTML5本地图片裁剪并上传 - QxQstar

    HTML5本地图片裁剪并上传 - QxQstar

    2017-03-25 14:00

  • Omi v1.0.2发布 - 正式支持传递javascript表达式 - 【当耐特】

    Omi v1.0.2发布 - 正式支持传递javascript表达式 - 【当耐特】

    2017-03-22 11:03

网友点评