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

CSS样式表
CSS 表单元素不继承body的字体属性
网页制作学习教程 CSS Position
网页设计学习教程 CSS盒模型
vertical-align 表单元素垂直对齐的解决方法
不用Cookie的仿刷新二级高亮菜单
CSS3 优势以及网页设计师如何使用CSS3技术
CSS 网页制作 提高CSS可阅读性
CSS 样式表中引用图片地址在各浏览器中的差异
CSS Sprite优化 减少HTTP链接数
网页制作中应用的50个CSS技巧(国外)
CSS 英文教程 CSS语法
CSS 网页文字渐变效果
纯css 圆角实现代码
CSS 新的图像替换方法
不必需的样式脚本文件导致页面不能及时更新
CSS 约定写法 利用扩展
最全的CSS浏览器兼容问题小结
CSS 网页图文混排的10个技巧
IE的CSS制作网页技巧3则
创造100% 自适应css布局的行之有效的方法

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


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-09   浏览: 196 ::
收藏到网摘: 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以上图片,大可用正常的方式导入背景及调用坐标。但考虑到最终目的及其可维护性,因而不去做高版本浏览器的常规处理方式。