当前位置: 首页 > 图文教程 > 网页制作 > CSS样式表 > 网页重构时在IE6中遇到png兼容性

CSS样式表
web标准常见问题集合4
web标准常见问题集合5
我的一些关于web标准的思考笔记(一)
关于filter滤镜应用于图片的两种创意
Div+Css(+Js)菜单代码及制作工具
css写菜单:简洁注释版
标准布局应用:显示/隐藏侧边栏 [附详细注解]
小心:CSS代码书写顺序不同,导致显示效果不一样
解决鼠标在 flash 链接上不停闪动的问题(web页面中)
从gb到utf-8
html在线编辑器的更新[2006-05]
对hao123进行重构
韩国商业网站设计分析
模仿combox(select)控件,不用为美化select烦恼了。
【已解决】标签页刷新问题
以前写的两个CSS树形菜单
CSS样式表的背景渲染效率
第1天:选择什么样的DOCTYPE
第2天:什么是名字空间
第3天:定义语言编码

CSS样式表 中的 网页重构时在IE6中遇到png兼容性


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-09   浏览: 217 ::
收藏到网摘: n/a

但在IE6中遇到png兼容性,及其延伸的种种问题。如:

  1. png32的图片上在IE6有兼容性问题,原本的透明显示的背景将会失效。
  2. 在问题1的基础上,针对IE6采用了CSS滤镜让其透明,但图片不能应用背景坐标定位的方式只能单张使用,这做法不利于带宽流量和请求链接数之余也不利样式的管理
  3. 在问题2的基础上,意味着要把png图片单张切割,并单张应用CSS滤镜

针对以上问题重构师的解决办法如下:

把背景图片如常的合并,利用相似于背景坐标的方式调用局部图片位置。最大区别在于分别定义了两个无意义的标签。

  • 一个标签作为模拟背景的载体标签:定义一个作为载体的标签,针对IE6以滤镜的形式导入图片,宽高与背景一致。
  • 另一个标签作为截取背景局部位置的截取标签:定义此标签宽高与预想调用背景局部位置大小一致,并隐藏其溢出的部份。
  • 最后计算出预想调用背景局部位置的坐标,定义在载体标签中。

HTML结构如下:

<div title="载体"> 
<div title="截取"></div> 
</div>

为了清晰的体现HTML结构,给标签添加了title属性,加以说明。

实现步骤(分3步):

  1. 载体标签:定义一个作为载体的标签,针对IE6以滤镜的形式导入图片,宽高与背景一致。
    (注意:滤镜图片路径相对于页面,而不是CSS的位置)  
    <div title="载体" style="width:440px;height:440px; _filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='bg.png');"></div>  
    步骤一,背景宽高示意图
  2. 截取标签:定义此标签宽高与预想调用背景局部位置大小一致,并隐藏其溢出的部份。

<div title="截取" style=" overflow:hidden; width:120px; height:120px;"></div>

 

步骤二,背景宽高示意图

  1. 最后计算出预想调用背景局部位置的坐标,定义在载体标签中。
    (背景局部位置坐标的调整可用margin或position控制。下面以”I”为例)

margin

<div title="载体" style="margin:-80px 0 0 -120px;width:440px;height:440px; _filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='bg.png');"></div>

position

<div title="载体" style="position:absloute;top:-80px;left:120px;width:440px;height:440px; _filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='bg.png');"></div>

步骤三,图片局部坐标示意图

完成后的代码

<div title="截取" style="width:120px;height:120px;overflow:hidden;">
<div title="载体" style="margin:-80px 0 0 -140px;width:440px;height:440px; _filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='bg.png');"></div></div>

在FF与IE7等浏览器处理方式与IE6一致,在这问题曾经做过考虑是真的要为了IE6而IE6吗?因为其它高版本浏览器都支持png32以上图片,大可用正常的方式导入背景及调用坐标。但考虑到最终目的及其可维护性,因而不去做高版本浏览器的常规处理方式。