热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

让ie6对png透明图片支持起来【HTML】

web前端|html教程让ie6对png透明图片支持起来web前端-html教程一个老生常谈的问题就是ie6不支持透明png图片啊。但其实ie6只是不支持png-24格式的透明背景

web前端|html教程让ie6对png透明图片支持起来【HTML】
让ie6对png透明图片支持起来
web前端-html教程
一个老生常谈的问题就是ie6不支持透明png图片啊。但其实ie6只是不支持png-24格式的透明背景图片,但对透明背景的png-8图片还是支持的,只是png-8图片只有256色,放到任意浏览器都会呈现白色的锯齿。
万年历数据库源码,vscode嵌入式远程调试,ubuntu中编程,tomcat重启闪退,爬虫循环python,php 分析html,呼伦贝尔seo优化哪家专业,免费公安网站源码lzw
当代码这样时:
公司源码 拿出来,联想商店下载不了vscode,ubuntu写c,tomcat 包加载顺序,sqlite英文,网页设计技术限制,数据库大小和空间大小,云服务器云虚拟主机,ecshop 编辑器插件,前端框架duly,逆世界爬虫,php习题,seo思想,学springboot之前,dede标签在线生成,双语外贸网站源码,网页棋牌游戏源码,淘宝虚拟物品模板下载,网站后台的验证码,手机页面 日期选择器,web云管理系统,商场物品管理系统源程序lzw

.jpg{ width: 400px; height:200px; background:#f00 url(png8.jpg) no-repeat; }

搜狐拍客源码,ubuntu平板哪里买,win7多个tomcat,爬虫项目类型,php页面自适应,seo查询攻略seo顾问lzw
div中的背景图片是下图的透明背景png-8图片:

浏览器打开的效果如下(chrome,firefox,ie6+都是这么个效果):

看到这些泛白的锯齿要哭瞎了,怎么去除这恶心的锯齿呢,ps保存png-8图片时,有多个选项,经测试通过勾选“扩散透明度仿色”时锯齿的能达到最小,

下图例,锯齿此时没那么恶心:

但是远远不够啊,这个视觉效果还是太差了。上网查询下,这是由于png-8白色杂边导致的问题,可以在保存图片前将杂边的颜色设置成和背景一致来解决。

在ie6下的效果如下,其他浏览器显示效果也一致:

此时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:让图片调整至充满整个容器。

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

效果妥妥的:

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

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

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

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

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

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

引用htc文件后,透明背景正常显示了(需要点击允许运行阻止的内容才能正常显示):

让ie6支持透明背景的png的方法就总结到这里。既然是兼容,就不可能百分百完美,具体用什么技术去完成网页的开发还是要思量下再做决定。虽然开发者总是吐槽兼容旧版本浏览器很恶心,但是旧版本浏览器曾经也作出过巨大贡献。

ie6虽已是耄耋之年,但由于xp用户还是挺多的,而且一般家庭不换电脑的话就不会去升级浏览器,所以ie6退出历史舞台还需花费一些时日。在ie6剩余不多的生命时光,我们需要做的就是修好各种bug,静静等待ie6挂掉。

补充:

评论区有人说连ie8都不去兼容了,我不想多说,拿数据说话,下图截取自百度对浏览器市场份额统计。过去的3个月ie8用户占了21.62%,ie7用户占5.12%,ie6用户占3.85%,我想你作为开发者,不兼容ie低版本,难道是你的网站不对30%的用户开放?不兼容ie6,你的网站每100人中就有4人给差评。当然这个统计基于一般情况,如果知道访问自己网站的特定用户群都使用chrome或firxfox浏览器,那当然可以不去兼容ie低版本。js框架基本抛弃低版本,这个是事实,因为js框架大部分都是外国人写的!而外国人基本用chrome浏览器,这不符合国情,国内依然有很多人在用低版本的ie浏览器,甚至都懒得去升级。我始终觉得,不去兼容多方浏览器的不是好开发者,因为兼容各方浏览器是每个开发者的分内事,而你永远无法要求用户使用和你一样的浏览器。

——————————-转载注明出处^_^:


推荐阅读
  • 分享css中提升优先级属性!important的用法总结
    web前端|css教程css!importantweb前端-css教程本文分享css中提升优先级属性!important的用法总结微信门店展示源码,vscode如何管理站点,ubu ... [详细]
  • 如何实现织梦DedeCms全站伪静态
    本文介绍了如何通过修改织梦DedeCms源代码来实现全站伪静态,以提高管理和SEO效果。全站伪静态可以避免重复URL的问题,同时通过使用mod_rewrite伪静态模块和.htaccess正则表达式,可以更好地适应搜索引擎的需求。文章还提到了一些相关的技术和工具,如Ubuntu、qt编程、tomcat端口、爬虫、php request根目录等。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • Oracle优化新常态的五大禁止及其性能隐患
    本文介绍了Oracle优化新常态中的五大禁止措施,包括禁止外键、禁止视图、禁止触发器、禁止存储过程和禁止JOB,并分析了这些禁止措施可能带来的性能隐患。文章还讨论了这些禁止措施在C/S架构和B/S架构中的不同应用情况,并提出了解决方案。 ... [详细]
  • 本文介绍了一个免费的asp.net控件,该控件具备数据显示、录入、更新、删除等功能。它比datagrid更易用、更实用,同时具备多种功能,例如属性设置、数据排序、字段类型格式化显示、密码字段支持、图像字段上传和生成缩略图等。此外,它还提供了数据验证、日期选择器、数字选择器等功能,以及防止注入攻击、非本页提交和自动分页技术等安全性和性能优化功能。最后,该控件还支持字段值合计和数据导出功能。总之,该控件功能强大且免费,适用于asp.net开发。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 本文介绍了在Hibernate配置lazy=false时无法加载数据的问题,通过采用OpenSessionInView模式和修改数据库服务器版本解决了该问题。详细描述了问题的出现和解决过程,包括运行环境和数据库的配置信息。 ... [详细]
  • Oracle Database 10g许可授予信息及高级功能详解
    本文介绍了Oracle Database 10g许可授予信息及其中的高级功能,包括数据库优化数据包、SQL访问指导、SQL优化指导、SQL优化集和重组对象。同时提供了详细说明,指导用户在Oracle Database 10g中如何使用这些功能。 ... [详细]
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
  • 使用Ubuntu中的Python获取浏览器历史记录原文: ... [详细]
  • Spring特性实现接口多类的动态调用详解
    本文详细介绍了如何使用Spring特性实现接口多类的动态调用。通过对Spring IoC容器的基础类BeanFactory和ApplicationContext的介绍,以及getBeansOfType方法的应用,解决了在实际工作中遇到的接口及多个实现类的问题。同时,文章还提到了SPI使用的不便之处,并介绍了借助ApplicationContext实现需求的方法。阅读本文,你将了解到Spring特性的实现原理和实际应用方式。 ... [详细]
  • 本文介绍了高校天文共享平台的开发过程中的思考和规划。该平台旨在为高校学生提供天象预报、科普知识、观测活动、图片分享等功能。文章分析了项目的技术栈选择、网站前端布局、业务流程、数据库结构等方面,并总结了项目存在的问题,如前后端未分离、代码混乱等。作者表示希望通过记录和规划,能够理清思路,进一步完善该平台。 ... [详细]
  • 高质量SQL书写的30条建议
    本文提供了30条关于优化SQL的建议,包括避免使用select *,使用具体字段,以及使用limit 1等。这些建议是基于实际开发经验总结出来的,旨在帮助读者优化SQL查询。 ... [详细]
  • SpringMVC接收请求参数的方式总结
    本文总结了在SpringMVC开发中处理控制器参数的各种方式,包括处理使用@RequestParam注解的参数、MultipartFile类型参数和Simple类型参数的RequestParamMethodArgumentResolver,处理@RequestBody注解的参数的RequestResponseBodyMethodProcessor,以及PathVariableMapMethodArgumentResol等子类。 ... [详细]
  • MySQL语句大全:创建、授权、查询、修改等【MySQL】的使用方法详解
    本文详细介绍了MySQL语句的使用方法,包括创建用户、授权、查询、修改等操作。通过连接MySQL数据库,可以使用命令创建用户,并指定该用户在哪个主机上可以登录。同时,还可以设置用户的登录密码。通过本文,您可以全面了解MySQL语句的使用方法。 ... [详细]
author-avatar
手机用户2602886817
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有