`
guohf
  • 浏览: 414851 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

关于IE6不能兼容LCUC使用的PNG透明图象

阅读更多

可恶的IE6竟然不支持PNG的透明效果,原来一直用FF的没有发现,今天在IE6下浏览,真是一塌糊涂,上网搜索了下IE6不支持PNG的透明效果,狂郁闷啊。从网上找到了两篇解决这个问题的文章,为了避免忘记,在此备注一下。

应用PNG图片的透明或半透明的特性能做出非常漂亮的网页来。Firefox和Opera对PNG的支持非常的好,都是IE却无视PNG图片这一特性的 “存在”,虽然IE7已经支持都是IE6还是不行。查了一些资料,基本解决了这一问题,准备应用到PJskin上。
虽然有让IE6支持PNG透明背景的JS程序,都是不是很方便,还是用CSS来实现的好。使用到的就是:
IE5.5+的AlphaImageLoader滤镜
引用内容 引用内容
语法:
filter : progid:DXImageTransform.Microsoft.AlphaImageLoader ( enabled=bEnabled , sizingMethod=sSize , src=sURL )
属性:
enabled : 可选项。布尔值(Boolean)。设置或检索滤镜是否激活。true | false
      true : 默认值。滤镜激活。
      false : 滤镜被禁止。

sizingMethod : 可选项。字符串(String)。设置或检索滤镜作用的对象的图片在对象容器边界内的显示方式。 crop : 剪切图片以适应对象尺寸。
        image : 默认值。增大或减小对象的尺寸边界以适应图片的尺寸。
        scale : 缩放图片以适应对象的尺寸边界。
        src : 必选项。字符串(String)。使用绝对或相对 url 地址指定背景图像。假如忽略此参数,滤镜将不会作用。

说明:
在对象容器边界内,在对象的背景和内容之间显示一张图片。并提供对此图片的剪切和改变尺寸的操作。如果载入的是PNG(Portable Network Graphics)格式,则0%-100%的透明度也被提供。
PNG(Portable Network Graphics)格式的图片的透明度不妨碍你选择文本。也就是说,你可以选择显示在PNG(Portable Network Graphics)格式的图片完全透明区域后面的内容。

了解了以上的内容,可以写一段简单的CSS代码(还不是完全正确的代码):
引用内容 引用内容

#div1 {
height: 600px;
width: 260px;
padding: 20px;
background-repeat: repeat;
filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=true, sizingMethod=scale, src="bj1.png"

}

这段简单的CSS代码就可以在IE中正常的显示PNG透明背景,但是会发现在FF下不会出现背景,分析原因:
AlphaImageLoader滤镜只能被IE支持,FF是不支持该滤镜的
有些初次写的时候很多人会这样:
在代码中添加这样一段: background-image: url(bj1.png);
添加这样一段代码虽然能解决FF下的问题,都是IE又出现问题:新的背景会覆盖在滤镜的背景之上,导致滤镜显示无效,这时候就用到IE和FF对CSS读取的区别特性了:
Firefox、Opera等完全支持PNG透明图片的浏览器也支持子选择器(>),而IE不识别(包括IE7),所有我们可以通过这来定义Firefox、Opera等浏览器中PNG图片的样式。代码如下:
引用内容 引用内容
html>body #div1 {
background-repeat: repeat;background-image: url(bj1.png);
}

同时,我们通过只有IE才识别的通配符(*),来定义IE浏览器中的滤镜。代码如下:
引用内容 引用内容
* #div1 {filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=true, sizingMethod=scale, src="bj1.png")

}

而#div1 {}就放一些IE和FF共用的设置来减少代码文件的大小。最终就是这样:
引用内容 引用内容
#div1 {
height: 600px;
width: 260px;
padding: 20px;
background-repeat: repeat;

}

html>body #div1 {
background-repeat: repeat;background-image: url(bj1.png);
}
* #div1 {filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=true, sizingMethod=scale, src="bj1.png")

}

需要注意的是:AlphaImageLoader滤镜会导致该区域的链接和按钮无效,解决的办法是为链接或按钮添加:position: relative;这样条代码,使其相对浮动。AlphaImageLoader无法设置背景的重复,所以对图片的切图精度会有很高的精确度要求。

 

 

这几天一直在学习PNG在网页的使用,也尝试的制作了一个使用PNG作为背景的skin,终于做成功了,在这里把制作的过程简单的写出来,以便大家借鉴。(透明PNG应用可以参考我上一篇日志)
其实使用PNG透明特性做网页主要解决的问题是IE6对PNG图片的读取,需要应用滤镜:
filter : progid:DXImageTransform.Microsoft.AlphaImageLoader ( enabled=bEnabled , sizingMethod=sSize , src=sURL )
写法的例子:
* #container #header
{filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=true, sizingMethod=image, src="http://huziyi.com/png/h_bj.png");

}
同时为了让FF单独读取背景(FF不支持滤镜,当是支持PNG透明特性),单独写段CSS:
html>body #container #header{
background-image: url(h_bj.png);
}
星玄宇告诉我还有更好的优化写法,可以减少IE7下的读取速度:用*html #来单独为IE6写滤镜的代码,html>body 可以同时被IE7和FF读取,这样就让IE7避免滤镜的使用以加快读取速度。我还没有测试。
在做PNG的皮肤中,PNG文件的切图要求很高,最好做到精确的切图和层的设置。链接失效的问题不仅仅可以在链接CSS里设置相对定位,也可以对该内容所在的层进行相对定位设置。
希望这些内容对制作PJskin有帮助,具体的代码优化还在进行中。

分享到:
评论

相关推荐

    IE6不兼容png透明背景解决方法

    在互联网早期,Internet Explorer 6(简称IE6)是广泛使用的浏览器,但它存在许多兼容性问题,其中之一就是对PNG(Portable Network Graphics)图像格式的透明背景支持不足。PNG是一种先进的位图格式,提供了24位...

    ie6兼容png透明图片

    ie6兼容png透明图片,导入js即可使ie6兼容png透明图片,无需调用。

    IE6完美解决PNG背景透明

    总结起来,"IE6完美解决PNG背景透明"是一个关于如何使用DD_belatedPNG JavaScript库来解决Internet Explorer 6浏览器对PNG透明度不支持问题的解决方案。这个库通过JavaScript和CSS的结合,使得在IE6下也能呈现出与...

    IE6png透明JS

    为了解决这个问题,开发者们开发了一系列JavaScript库和技巧,使得在IE6下也能实现PNG图像的透明效果。 1. **Alpha Image Loader滤镜**:IE6提供了一个名为"Alpha Image Loader"的滤镜,可以通过CSS样式应用到元素...

    ie 下png 透明图片 兼容解决方案

    在互联网的早期,Internet Explorer(简称IE)浏览器在处理PNG(Portable Network Graphics)格式的透明图片时存在一些兼容性问题,特别是在IE6及以下版本。这些版本的浏览器无法正确显示24位PNG图像的Alpha透明效果...

    IE6兼容PNG透明

    在互联网早期,IE6(Internet Explorer 6)是广泛使用的浏览器,但它存在许多与现代Web标准不兼容的问题,其中之一就是对PNG(Portable Network Graphics)图像格式的透明支持问题。PNG是一种高质量、无损的图像格式...

    PNG图片透明兼容IE6和火狐示例

    总之,要解决PNG图片在IE6和Firefox上的透明兼容问题,开发者需要了解PNG格式的透明特性,掌握iepngfix.htc的行为文件使用方法,以及如何在CSS中应用这些技巧,以实现跨浏览器的兼容性。这是一个典型的前端开发中的...

    js_IE6支持png透明解决png_ie6下不透明背景图片

    在早期的Internet Explorer 6(简称IE6)浏览器中,PNG格式的图片存在一个众所周知的问题:它不支持24位PNG图像的透明效果。这个问题给网页设计师带来了许多困扰,因为PNG格式的透明特性在其他现代浏览器中是被广泛...

    IE6下PNG透明代码

    在早期的Web开发中,IE6(Internet Explorer 6)是一个让开发者头疼的浏览器,尤其在处理PNG(Portable Network Graphics)格式图片时,其对PNG8和PNG24的透明支持并不完善。PNG是一种无损压缩的图像格式,支持透明...

    让 IE6 支持 PNG 透明

    在早期的网页设计中,IE6(Internet Explorer 6)浏览器对PNG图像格式的透明支持是有限的,尤其是对于PNG-24格式的图像,它只支持简单的索引颜色透明,而对于真彩色的PNG图像则无法实现透明效果。这给网页设计师带来...

    在IE中不显示透明PNG图像纠正控件

    总的来说,这个“在IE中不显示透明PNG图像纠正控件”是一个针对老版本IE浏览器的兼容性解决方案,它通过JavaScript解决了IE5.5和IE6对PNG透明度支持不足的问题,使得网站在这些浏览器中也能呈现出良好的视觉效果。...

    ie6z中兼容页面中所有png图片透明

    在探讨“ie6z中兼容页面中所有png图片透明”的问题时,我们首先需要理解几个关键概念:Internet Explorer 6(简称IE6),PNG图片格式,以及如何在IE6中处理PNG图片的透明性。 ### Internet Explorer 6 IE6是微软在...

    IE6 PNG 透明处理方法

    在IE6中,PNG图像格式的透明度支持并不完善,导致许多设计师在创建具有半透明或背景透明效果的网页时遇到困难。这篇博文和相关文件提供了针对这个问题的解决方案。 PNG是一种流行且广泛使用的图像格式,它支持24位...

    完美解决IE6下png透明

    在早期的网页设计中,IE6(Internet Explorer 6)作为主流浏览器,其对PNG(Portable Network Graphics)图像格式的支持存在显著的问题,尤其是对于PNG-24格式的图像,它无法正确显示背景透明或者半透明效果。...

    IE6 png背景图片透明

    6. **备选方案**:如果兼容性问题过于复杂,可以考虑为IE6提供一个没有透明效果的备用图像,或者使用其他不依赖透明度的图像格式,如GIF。 尽管现在IE6的使用率已经大大降低,但由于某些机构或用户群可能仍在使用,...

    IE 6 PNG透明通道

    然而,早期的Internet Explorer 6(简称IE6)浏览器对PNG8和PNG24格式的支持存在局限性,特别是对Alpha透明通道的支持不完全,导致PNG图片的透明效果在IE6上显示异常。 为了解决这个问题,开发者们提出了一些解决...

    处理IE6浏览器显示.png图片透明度文件

    在互联网的早期,Internet Explorer 6 (IE6) 是广泛使用的浏览器之一,但它存在许多兼容性问题,其中就包括PNG图片透明度的问题。PNG(Portable Network Graphics)是一种支持透明度的图像格式,但在IE6中,它无法...

    ie6 png 透明度 解决方法

    PNG是一种优秀的图像格式,尤其适用于需要半透明效果的设计,但IE6只支持8位的PNG图像,而不支持带有alpha通道的24位PNG图像,导致了透明或半透明部分显示为黑色或不透明。这个问题让许多设计师和开发者头痛不已。...

    处理ie6下png格式透明效果

    这主要是因为IE6使用了旧版的GDI(Graphics Device Interface)来渲染图形,而不支持PNG24的Alpha透明。 解决IE6中的PNG透明问题,主要有以下几种方法: 1. **CSS滤镜法**:利用CSS的`filter`属性,可以实现IE6对...

    ie6-PNG透明渲染

    标题"ie6-PNG透明渲染"直指这一问题的核心:如何在IE6中正确地显示PNG图像的透明效果。在IE6中,PNG-24格式的图像虽然支持alpha透明(即半透明),但默认情况下会显示为不透明,而PNG-8格式则只支持索引透明(即非...

Global site tag (gtag.js) - Google Analytics