http://xiaoboss.iteye.com/blog/1167829

现在web设计,画面是越来越炫

但是使用了透明的背景图,在IE6下,

在ie78 ff等浏览器显示正常。

解决办法:

Html代码  
  1. body{ background-color:#CCC;}
  2. 一般普通写法如下:
  3. div.bg1{ background:url(logo.png) no-repeat center;width:100px; height:100px;}
  4. 特殊处理写法如下:
  5. /** Only Used For IE */
  6. *.bg2{filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=true, sizingMethod=scale, src="logo.png"); width:100px; height:100px;}
  7. /** Only Used For FF,Sa*/
  8. html > body .bg2{ background:url(logo.png) no-repeat center;width:100px; height:100px;}

一下是html调用css写法:

Html代码  
  1. <body>
  2. <div class="bg1">test content</div>
  3. <hr/>
  4. <div class="bg2">test content</div>
  5. </body>

一下为ie7对比显示,上面为一般写法,可以发现ie6处理的不好。

下面为特殊写法,可见比较完美。

分析:

ie系列浏览器可以通过filter 属性来设置背景图,而filter属性在除ie系列浏览器就不生效。

所以这里想到hack处理办法。

IE系列自己特殊的css写法可以通过*,*.bg2 这种css样式只能在ie系列浏览器生效

同样使用html > body .bg2,只有IE系列不生效的写法。

这样可以看出效果在ie ff等下都显示正常

案例1:定义一个样式,给某个div应用这个样式后,div的透明png背景图片自动透明了。(注意两处图片的路径写法不一样,本例中,icon_home.png图片与html文件在相同目录)

Html代码  
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
  5. <title>无标题文档</title>
  6. <style type="text/css">
  7. <!--
  8. .qq {
  9. height: 90px;
  10. width: 90px;
  11. background-image: url(icon_home.png)!important;/* FF IE7 */
  12. background-repeat: no-repeat;
  13. _filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='icon_home.png'); /* IE6 */
  14. _ background-image: none; /* IE6 */
  15. }
  16. -->
  17. </style>
  18. </head>
  19. <body>
  20. <div class="qq"></div>
  21. </body>
  22. </html>

案例2: 给img定义样式,页面上所有透明png即自动透明了。(这方法只对直接插入的图片有效,对背景图无效)注意,要准备一个透明的小图片transparent.gif,大小不限。必须放在和html相同的目录
请勿大量使用,否则会导致页面打开很慢!!!)

Html代码  
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
  5. <title>无标题文档</title>
  6. <style type="text/css">
  7. .mypng img {
  8. azimuth: expression(
  9. this.pngSet?this.pngSet=true:(this.nodeName == "IMG" && this.src.toLowerCase().indexOf('.png')>-1?(this.runtimeStyle.backgroundImage = "none",
  10. this.runtimeStyle.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + this.src + "', sizingMethod='image')",
  11. this.src = "transparent.gif"):(thisthis.origBg = this.origBg? this.origBg :this.currentStyle.backgroundImage.toString().replace('url("','').replace('")',''),
  12. this.runtimeStyle.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + this.origBg + "', sizingMethod='crop')",
  13. this.runtimeStyle.backgroundImage = "none")),this.pngSet=true);
  14. }
  15. </style>
  16. </head>
  17. <body>
  18. 换成你的png图片
  19. <div class="mypng">
  20. <img src="icon_face_07.png" width="30" height="30" />
  21. <img src="icon_face_10.png" width="30" height="30" />
  22. <img src="icon_face_08.png" width="30" height="30" />
  23. </div>
  24. </body>
  25. </html>

案例3:用JS实现,加上一段js代码后,所有插入的透明png自动透明了.(注意,这方法也是只对直接插入的图片有效,对背景图无效

Html代码  
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
  5. <title>无标题文档</title>
  6. <script language="JavaScript">
  7. function correctPNG() // correctly handle PNG transparency in Win IE 5.5 & 6.
  8. {
  9. var arVersion = navigator.appVersion.split("MSIE")
  10. var version = parseFloat(arVersion[1])
  11. if ((version >= 5.5) && (document.body.filters))
  12. {
  13. for(var j=0; j<document.images.length; j++)
  14. {
  15. var img = document.images[j]
  16. var imgimgName = img.src.toUpperCase()
  17. if (imgName.substring(imgName.length-3, imgName.length) == "PNG")
  18. {
  19. var imgID = (img.id) ? "id='" + img.id + "' " : ""
  20. var imgClass = (img.className) ? "class='" + img.className + "' " : ""
  21. var imgTitle = (img.title) ? "title='" + img.title + "' " : "title='" + img.alt + "' "
  22. var imgStyle = "display:inline-block;" + img.style.cssText
  23. if (img.align == "left") imgStyle = "float:left;" + imgStyle
  24. if (img.align == "right") imgStyle = "float:right;" + imgStyle
  25. if (img.parentElement.href) imgStyle = "cursor:hand;" + imgStyle
  26. var strNewHTML = "<span " + imgID + imgClass + imgTitle
  27. + " style=\"" + "width:" + img.width + "px; height:" + img.height + "px;" + imgStyle + ";"
  28. + "filter:progid:DXImageTransform.Microsoft.AlphaImageLoader"
  29. + "(src=\'" + img.src + "\', sizingMethod='scale');\"></span>"
  30. img.outerHTML = strNewHTML
  31. jj = j-1
  32. }
  33. }
  34. }
  35. }
  36. window.attachEvent("onload", correctPNG);
  37. </script>
  38. <style type="text/css">
  39. <!--
  40. body {
  41. background-color: #9999CC;
  42. }
  43. -->
  44. </style></head>
  45. <body>
  46. 把图片换成你自己的图片
  47. <img src="img/icon_face_03.png" width="30" height="30" /><!--把图片换成你自己的图片 -->
  48. <img src="img/icon_face_05.png" width="30" height="30" />
  49. <img src="img/menu_title_over.png" width="130" height="36" />
  50. </body>
  51. </html>

案例4:

Html代码  
  1. <script language="javascript">
  2. // 修复 IE 下 PNG 图片不能透明显示的问题
  3. function fixPNG(myImage) {
  4. var arVersion = navigator.appVersion.split("MSIE");
  5. var version = parseFloat(arVersion[1]);
  6. if ((version >= 5.5) && (version < 7) && (document.body.filters))
  7. {
  8. var imgID = (myImage.id) ? "id='" + myImage.id + "' " : "";
  9. var imgClass = (myImage.className) ? "class='" + myImage.className + "' " : "";
  10. var imgTitle = (myImage.title) ? "title='" + myImage.title   + "' " : "title='" + myImage.alt + "' ";
  11. var imgStyle = "display:inline-block;" + myImage.style.cssText;
  12. var strNewHTML = "<span " + imgID + imgClass + imgTitle
  13. + " style=\"" + "width:" + myImage.width
  14. + "px; height:" + myImage.height
  15. + "px;" + imgStyle + ";"
  16. + "filter:progid:DXImageTransform.Microsoft.AlphaImageLoader"
  17. + "(src=\'" + myImage.src + "\', sizingMethod='scale');\"></span>";
  18. myImage.outerHTML = strNewHTML;
  19. } }
  20. window.οnlοad=function(){
  21. document.getElementById("top").style.height=screen.height/5+"px";
  22. }//
  23. </script>

用法如下:
<img src="logo.png" width="328" height="325" border="0" οnlοad="fixPNG(this)" />

以下是微软官方提供的解决方法:

Js代码 
  1. /*
  2. Correctly handle PNG transparency in Win IE 5.5 & 6.
  3. Copyright 2007 Ignia, LLC
  4. Based in part on code from from http://homepage.ntlworld.com/bobosola.
  5. Use in <HEAD> with DEFER keyword wrapped in conditional comments:
  6. <!--[if lt IE 7]>
  7. <script defer type="text/javascript" src="pngfix.js"></script>
  8. <![endif]-->
  9. */
  10. function fixPng() {
  11. var arVersion = navigator.appVersion.split("MSIE")
  12. var version = parseFloat(arVersion[1])
  13. if ((version >= 5.5 && version < 7.0) && (document.body.filters)) {
  14. for(var i=0; i<document.images.length; i++) {
  15. var img = document.images[i];
  16. var imgName = img.src.toUpperCase();
  17. if (imgName.indexOf(".PNG") > 0) {
  18. var width = img.width;
  19. var height = img.height;
  20. var sizingMethod = (img.className.toLowerCase().indexOf("scale") >= 0)? "scale" : "image";
  21. img.runtimeStyle.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + img.src.replace('%23', '%2523').replace("'", "%27") + "', sizingMethod='" + sizingMethod + "')";
  22. img.src = "images/blank.gif";
  23. img.width = width;
  24. img.height = height;
  25. }
  26. }
  27. }
  28. }
  29. fixPng();

转载于:https://www.cnblogs.com/zhp404/articles/3974913.html

IE6 png背景图片显示不正常处理相关推荐

  1. 微信小程序之页面样式以及背景图片显示问题

    ##一.背景 下面这些都是在开发的过程中,记录下来的笔记. ##二.样式及背景图片显示问题 1.修改单个页面的背景色: 在页面的wxss里面加上这句代码: page{background-color: ...

  2. html内容被背景图片遮住怎么办_定义BODY背景图后,DIV的背景图片显示不全(已解决)...

    你的位置: 问答吧 -> WEB标准 -> 问题详情 定义BODY背景图后,DIV的背景图片显示不全(已解决) 一个有趣的问题,当BODY有背景图片的时候,BODY里的DIV一旦也有背景图 ...

  3. css 设置背景图一半_css怎么背景图片显示不全?

    css设置背景图片显示不全是因为背景图片过大导致的,我们可以通过设置div大小大于背景图片或使用background-size属性设置背景图片小于div大小使背景图片显示完全. 其中导致背景图片显示不 ...

  4. vue打包部署服务器,背景图片显示空白

    vue打包部署服务器后,往往会出现部分背景图片显示空白的情况,部分就说明只是打包过程中的图片路径问题: 在build 文件夹中找到 utils.js文件加上这行代码即可:publicPath: '-/ ...

  5. android+背景图片不显示,背景图片显示问题 图片显示错误 android开发

    先贴出我的配置文件代码 android:layout_width="fill_parent" android:layout_height="fill_parent&quo ...

  6. html内容被背景图片遮住怎么办_css背景图片显示不完怎么解决?

    css背景图片显示不完是什么原因?怎么解决?下面本篇文章就来给大家介绍一下css背景图片显示不完的解决方法.有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助. css设置背景图片显示不全 ...

  7. css的背景图片不显示,wepback打包时,css的背景图片显示不出来,求教!

    如题.项目环境使用 webpack 构建的,webpack 这块配置的相关代码是 module: { loaders: [ { test: /\.(js|jsx)$/, exclude: /node_ ...

  8. html 文字在背景图片上,如何让文字作为CSS背景图片显示

    在实际开发中,有时候希望文字内容可以作为背景图片显示,一方面是希望利用背景图片的优势,例如可以平铺,另外一方面是常见的替换元素不能使用伪元素创建文字,此时只能寄希望与背景图. 关键如何把文字变成背景图 ...

  9. 微信小程序 背景图片base64_微信小程序背景图片显示不出来

    开发小程序的时候,设置页面的背景,用到css代码:.page__bd{ width: 100%; height: 220px; background: url('../../assets/img/im ...

最新文章

  1. java多线程notify_Java多线程 wait notify
  2. maven pom配置文件样本
  3. 《信息存储与管理(第二版):数字信息的存储、管理和保护》—— 2.6 磁盘驱动部件...
  4. linux防火墙应用,Linux防火墙iptables基本应用
  5. HDU 5348 MZL's endless loop(DFS去奇数度点+欧拉回路)
  6. 容器技术在云中如何定位
  7. oracle vba 数组_Excel VBA 连接各种数据库(二) VBA连接Oracle数据库
  8. TearDrop拒绝服务攻击
  9. 选择室内地图提供商时需要考虑的12件事
  10. 【转】利用Windows API调用摄像头
  11. 关于pip 的依赖项解析器当前未考虑安装的所有包。此行为是以下依赖项冲突的根源。
  12. 解决echarts在360浏览器兼容模式和ie浏览器不兼容问题
  13. 提高数据处理速度_气相色谱仪用数据处理
  14. gamechannel.exe
  15. 河南理工大学课程库API
  16. kettle7.1快速源码阅读
  17. 怎么降低jpg文件大小?如何压缩jpg图片变小?
  18. SpringBoot源码解析(七)EnvironmentPostProcessor
  19. excel中后缀为csv和xls有何区别
  20. 谷歌GPB外链对网站排名有帮助吗

热门文章

  1. linux win32disk,windows使用Win32DiskImager安装树莓派系统
  2. arma找不到合适的模型_TAP300R系列直角方肩立铣刀,您还在为找不到合适刀具发愁吗?...
  3. 百度人脸搜索的一次尝试(JAVA)
  4. 威佐夫博弈:百练OJ:1067:取石子游戏
  5. 2020年下半年信息系统项目管理师章节占分比
  6. 笔记-项目范围管理-需求工程-需求分类
  7. 笔记-项目质量管理-6σ管理法
  8. 从中间件到分布式数据库生态,ShardingSphere 5.x革新变旧
  9. Nginx在Windows下载安装启动与配置前后端请求代理
  10. Android中TimePicker时间选择器的使用和获取选择的时和分