PNG 图片在网站设计中是不可或缺的部分,最大的特点应该在于 PNG 可以无损压缩,而且还可以设置透明,对于增强网站的图片色彩效果有重要的作用。

但为什么 PNG 图片却没有 GIF 和 JPG 图片的使用来得广泛呢,这个祸因应归属于微软的 IE 浏览器(Firefox 和 Opera 对 PNG 支持的比较好,而现在浏览器的主流IE6 却无法很好的支持)。不过微软在最近也开始改过自新了,新出的的 IE7 可以很好的支持 PNG,可以想象在未来的网络世界,PNG 图片的重要性将会更加凸显。

但在大家还在绝大多数的使用 IE6 的时候,我们又怎样在 IE6 的世界去完美使用 PNG 图片呢(PNG 图片的时候最重要的地方在于 PNG 透明背景图片的运用)。我们应该庆幸我们是幸福的!IE5.5+ 的 AlphaImageLoader 滤镜为通向 png 提供了一个道路,如果他载入的是 PNG(Portable Network Graphics) 格式,则 0%-100% 的透明度也被提供。但 IE5.0 无法支持属性,那只有完全绝望了,不过绝望的只是几个,得到是绝大数,我们应该知足,知足才会常乐。

现在我们将通过 Hack 和 AlphaImageLoader 滤镜来实现 IE6 下的 PNG 透明背景图片,不过由于 filter 的使用存在一定的性能问题,所以尽量少用。

先熟悉下滤镜的语法:

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 地址指定背景图像。假如忽略此参数,滤镜将不会作用。

Firefox、Opera、IE7 等完全支持 PNG 透明图片的浏览器,而 IE6 不能很好识别,所有我们可以通过这来定义Firefox、Opera、IE7 等浏览器中 PNG 图片的样式。如下:

#png {background: url(绝对路径/images/bg.png) repeat;}

而对于 IE6,我们都通过滤镜的方法来定义。我们通过只有 IE6 才识别的下划线(_),来定义 IE6 浏览器中的滤镜。如下:

#png {
_filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled='true', sizinMethod='scale', src="绝对路径/images/bg.png");
_background:none;
}

这样综合起来的最后方法就是:

#png {
background: url(绝对路径/images/bg.png) repeat;
_filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled='true', sizingMethod='scale', src="绝对路径/images/bg.png");
_background:none;
}

不过需要注意的一个地方:使用 AlphaImageLoader 后该区域的超链接和按钮会失效,解决的方法:对链接或按钮直接设置相对位置,让它们浮动于滤镜区域的上面。

PNG透明 IE6 (三种解决方法)

FF和IE7已经直接支持透明的png图了,下面这个主要是解决IE6下透明PNG图片有灰底的

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

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>无标题文档</title>
<style type="text/css">
<!--
.qq {
height: 90px;
width: 90px;
background-image: url(icon_home.png)!important;
background-repeat: no-repeat;

_filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='icon_home.png');
_ background-image: none;
}
-->
</style>
</head>

<body>

<div class="qq"></div>

</body>
</html>

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

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>无标题文档</title>
<style type="text/css">
.mypng img {
azimuth: expression_r(
this.pngSet?this.pngSet=true:(this.nodeName == "IMG" && this.src.toLowerCase().indexOf('.png')>-1?(this.runtimeStyle.backgroundImage = "none",
this.runtimeStyle.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + this.src + "', sizingMethod='image')",
this.src = "transparent.gif"):(this.origBg = this.origBg? this.origBg :this.currentStyle.backgroundImage.toString().replace('url("','').replace('")',''),
this.runtimeStyle.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + this.origBg + "', sizingMethod='crop')",
this.runtimeStyle.backgroundImage = "none")),this.pngSet=true);
}

</style>
</head>

<body>
换成你的png图片
<div class="mypng">
<img src="icon_face_07.png" width="30" height="30" />
<img src="icon_face_10.png" width="30" height="30" />
<img src="icon_face_08.png" width="30" height="30" />
</div>
</body>
</html>

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

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>无标题文档</title>
<script language="JavaScript">
function correctPNG() // correctly handle PNG transparency in Win IE 5.5 & 6.
{
    var arVersion = navigator.appVersion.split("MSIE")
    var version = parseFloat(arVersion[1])
    if ((version >= 5.5) && (document.body.filters))
    {
       for(var j=0; j<document.images.length; j++)
       {
          var img = document.images[j]
          var imgName = img.src.toUpperCase()
          if (imgName.substring(imgName.length-3, imgName.length) == "PNG")
          {
             var imgID = (img.id) ? "id='" + img.id + "' " : ""
             var imgClass = (img.className) ? "class='" + img.className + "' " : ""
             var imgTitle = (img.title) ? "title='" + img.title + "' " : "title='" + img.alt + "' "
             var imgStyle = "display:inline-block;" + img.style.cssText
             if (img.align == "left") imgStyle = "float:left;" + imgStyle
             if (img.align == "right") imgStyle = "float:right;" + imgStyle
             if (img.parentElement.href) imgStyle = "cursor:hand;" + imgStyle
             var strNewHTML = "<span " + imgID + imgClass + imgTitle
             + " style=\"" + "width:" + img.width + "px; height:" + img.height + "px;" + imgStyle + ";"
             + "filter:progid:DXImageTransform.Microsoft.AlphaImageLoader"
             + "(src=\'" + img.src + "\', sizingMethod='scale');\"></span>"
             img.outerHTML = strNewHTML
             j = j-1
          }
       }
    }   
}
window.attachEvent("onload", correctPNG);
</script>
<style type="text/css">
<!--
body {
background-color: #9999CC;
}
-->
</style></head>

<body>
把图片换成你自己的图片
<img src="img/icon_face_03.png" width="30" height="30" /><!--把图片换成你自己的图片 -->
<img src="img/icon_face_05.png" width="30" height="30" />
<img src="img/menu_title_over.png" width="130" height="36" />
</body>
</html>

签名档

编辑签名档

发表 取消

我的热评日志

  • 通过Forms身份验证设置不同页面的访问权限2010-07-19 13:48
  • 图解DIY人员组装电脑全过程~~~~~~~~~~~~~~~~2009-09-01 22:21
  • Photoshop 技能167个 经典的Photoshop技巧大全2009-11-07 21:02

本文最近访客

设置查看最近位访客↓收起↑

  • 评论
  • 互动(0)

网页中PNG透明背景图片的完美应用相关推荐

  1. html语言设置网页背景,在html网页中如何设置背景图片?网页背景怎么设置?

    不知道大家有没有发现,当我们在浏览部分网页的时候网页的背景都是很漂亮的.那么今天小编来教大家怎么在 html 网页中设置背景图片吧! 1.首先还是老样子,我们在开发工具中新建一个 .html 文件,然 ...

  2. 在网页中如何设置背景图片

    序号 中文说明 标记语法 备注 1 背景颜色 {background-color:数值}   2 背景图片 {background-image: url(URL)|none}   3 背景重复 {ba ...

  3. 在ASP网页中如何设置背景图片

    序号 中文说明 标记语法 备注 1 背景颜色 {background-color:数值}   2 背景图片 {background-image: url(URL)|none}   3 背景重复 {ba ...

  4. php 网页 透明背景图片,php 处理透明背景的图片时的问题

    PHP图象处理之透明背景的gif和png图片的一些问题 1,直接读取有透明背景的PNG格式文件,然后直接输出,背景变成了黑色,gif则没有这种情况. 解决方法:使用 imagesavealpha ($ ...

  5. CSS中如何实现背景图片透明并且固定和文字不透明效果

    设置背景图片的透明度,并且该背景图片不随鼠标滚动而移动,我们可以使用滤镜filter中的透明度设置opacity,并使用伪类before和定位 至于opacity的作用:转化图像的透明程度.值定义转换 ...

  6. php ai格式生成png,AI怎么生成透明png? ai导出PNG格式透明背景图片的教程

    我们需要一张背景透明的png格式的图片,该怎么使用ai导出透明png格式的图片呢?请看下文呢详细介绍. 1.请打开AI软件,以快捷键Ctrl+N新建一个空白文档.选择左侧工具栏中的椭圆工具. 2.用椭 ...

  7. Visual Studio中如何设置背景图片,壁纸

    学习编程是一个漫长的过程,设置一个自己喜欢的背景图片,可以给我们的学习过程添加一些乐趣. 下面是效果图 目录 1.在扩展中下载ClaudialDE 2.设置背景图片 3.隐藏窗口 3.或使窗口透明 4 ...

  8. OpenCV技巧 | 常用格式图片保存为透明背景图片(附Python源码)-教你轻松制作Logo

    导读 本文主要介绍使用OpenCV将常用格式图片保存为透明背景图片的方法与实现代码. 实现目标 本文的目标有如下两个: ① 将常见格式[jpg/png/bmp]白色背景图片转换保存为透明背景图片: ② ...

  9. php如何把图片铺满,用Dreamweaver8设计网页,怎样使背景图片铺满全屏?

    楼主说的是要背景图片只出现一次,而且是铺满全屏的吧!这是不可能的,背景图片是不能用代码控制它的大小的,它是多大,做背景的时候就只能是多大!最多是重复N个图片 我们在网页制作过程中,尤其是初学的人们读喜 ...

最新文章

  1. 面试大厂背怼!这都搞不定,你只能做“搬运工”!
  2. linux上安全狗的安装
  3. java基础----数据结构与算法----Java API:集合 以及 排序相关API
  4. 不想工作就想创业?我劝你看完这档综艺再决定
  5. [待解决]报错的脚本
  6. 算法改进有多快?是否比迭代硬件收益更大?这是MIT的结论
  7. 开机explorer无法启动,无法进入桌面
  8. 反应式服务中的线程本地状态可用性
  9. mysql 四种存储引擎
  10. html如何在本页路径上拼接参数,Html图片路径拼接参数实现打印导出
  11. Linux系统(简介、文件管理、常用命令、账号管理、c开发工具)
  12. 提交代码到远程GIT仓库,代码自动同步到远程服务器上。
  13. c++之二维数组参数传递
  14. 英语语法基础篇-foundation
  15. webpack的可视化资源分析工具webpack-bundle-analyzer的使用
  16. C#-is and as
  17. 拓端tecdat|基于matlab的Lorenz系统仿真可视化
  18. 潘多拉 搭建 php服务器,OpenWrt/LEDE/潘多拉固件4G网卡上网之【HiLink模式上网教程】...
  19. android timepicker 设置颜色,android – 更改TimePicker文本颜色
  20. 人工智能发展的三个热潮

热门文章

  1. 先搞清楚了任务究竟是什么再说
  2. vue+vuex+leaflet Jest单测踩坑指南
  3. 适配器模式(三种)简单使用
  4. Elasticsearch官档翻译——2 2 在Linux上启动服务
  5. DFS Gym 100553J Jokewithpermutation
  6. 关于函数式宏定义的学习
  7. 解决kubernetes中ingress-nginx配置问题
  8. JAVA设计模式初探之——装饰者模式
  9. Microservice 微服务的理论模型和现实路径
  10. 解决Couldn't resolve host 'mirrorlist.centos.org