一个老生常谈的问题就是ie6不支持透明png图片啊。但其实ie6只是不支持png-24格式的透明背景图片,但对透明背景的png-8图片还是支持的,只是png-8图片只有256色,放到任意浏览器都会呈现白色的锯齿。
当代码这样时:
<style type="text/css"> .gif{ width: 400px; height:200px; background:#f00 url(png8.png) no-repeat; } </style><div class="gif"></div>
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:让图片调整至充满整个容器。
.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);}
这里有个介绍这种技术的网站: 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浏览器,甚至都懒得去升级。我始终觉得,不去兼容多方浏览器的不是好开发者,因为兼容各方浏览器是每个开发者的分内事,而你永远无法要求用户使用和你一样的浏览器。
-------------------------------转载注明出处^_^:

HTML的未来趋势是语义化和Web组件,CSS的未来趋势是CSS-in-JS和CSSHoudini,JavaScript的未来趋势是WebAssembly和Serverless。1.HTML的语义化提高可访问性和SEO效果,Web组件提升开发效率但需注意浏览器兼容性。2.CSS-in-JS增强样式管理灵活性但可能增大文件体积,CSSHoudini允许直接操作CSS渲染。3.WebAssembly优化浏览器应用性能但学习曲线陡,Serverless简化开发但需优化冷启动问题。

HTML、CSS和JavaScript在Web开发中的作用分别是:1.HTML定义网页结构,2.CSS控制网页样式,3.JavaScript添加动态行为。它们共同构建了现代网站的框架、美观和交互性。

HTML的未来充满了无限可能。1)新功能和标准将包括更多的语义化标签和WebComponents的普及。2)网页设计趋势将继续向响应式和无障碍设计发展。3)性能优化将通过响应式图片加载和延迟加载技术提升用户体验。

HTML、CSS和JavaScript在网页开发中的角色分别是:HTML负责内容结构,CSS负责样式,JavaScript负责动态行为。1.HTML通过标签定义网页结构和内容,确保语义化。2.CSS通过选择器和属性控制网页样式,使其美观易读。3.JavaScript通过脚本控制网页行为,实现动态和交互功能。

HTMLISNOTAPROGRAMMENGUAGE; ITISAMARKUMARKUPLAGUAGE.1)htmlStructures andFormatSwebContentusingtags.2)itworkswithcsssforstylingandjavascript for Interactivity,增强WebevebDevelopment。

HTML是构建网页结构的基石。1.HTML定义内容结构和语义,使用、、等标签。2.提供语义化标记,如、、等,提升SEO效果。3.通过标签实现用户交互,需注意表单验证。4.使用、等高级元素结合JavaScript实现动态效果。5.常见错误包括标签未闭合和属性值未加引号,需使用验证工具。6.优化策略包括减少HTTP请求、压缩HTML、使用语义化标签等。

HTML是一种用于构建网页的语言,通过标签和属性定义网页结构和内容。1)HTML通过标签组织文档结构,如、。2)浏览器解析HTML构建DOM并渲染网页。3)HTML5的新特性如、、增强了多媒体功能。4)常见错误包括标签未闭合和属性值未加引号。5)优化建议包括使用语义化标签和减少文件大小。

WebDevelovermentReliesonHtml,CSS和JavaScript:1)HTMLStructuresContent,2)CSSStyleSIT和3)JavaScriptAddSstractivity,形成thebasisofmodernWebemodernWebExexperiences。


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

SublimeText3汉化版
中文版,非常好用

Dreamweaver Mac版
视觉化网页开发工具

Atom编辑器mac版下载
最流行的的开源编辑器

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

MinGW - 适用于 Windows 的极简 GNU
这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。