IE8 在元素尺寸大于(2048px/4096px)时 alpha滤镜渲染失败
作者:yemoo 来源:yemoo博客 发布时间:2010-01-05 16:39:00
自动上次ymPrompt组件发布,自己就曾发现在IE8下遮罩的半透明滤镜有时无效的问题,后来也有网友提出过这个问题,但自己一直也没有太多关注,以为是IE8的安全策略问题,因此我一直都认为IE8可能默认不支持alpha透明滤镜了。曾经心里还一直纳闷:这MS是在搞什么呢,自动的东西都搞得这么不统一。
对此问题,我一直都认为没有很好的解决办法,唯一有效的办法就是采用IE7兼容模式来编写页面,即在页面中增加
<meta http-equiv="X-UA-Compatible" content="IE=7" />
,但这对于专门为ie8编写的页面来说是个比较不靠谱的方法。
近段时间在抽时间准备编写下一版本的ymPrompt,因此下载了一些时下流行的弹出组件,看看其实现和演示,一次测试中,无意发现某个组件的弹出遮罩在IE8下是半透明的,当时就立即查看源码,但奇怪的是没有发现那个兼容IE7的代码存在,难道这里还有什么高招或者玄机?我把组件里的那行半透明的html取出来,和自己组件中的代码对比,但没有发现什么差别,然后就对比CSS属性,一个个测试,最后发现,当把高度改为和我Demo中遮罩高度一致时,半透明就失效了!到这里基本知道,IE8应该是元素达到某个界限值后滤镜无效了。
在本人笔记本(ATI显卡+WIN7+IE8)上多次测试,发现当遮罩的高度或者宽度大于4096时,透明滤镜就失效了~ 这个数字在计算机还是比较有特殊意义的:2的N(N=12)次方。接下来开始在google寻找一些相关的资料,虽然资料很少,还是找到了一些相关的内容,如filter-alpha-opacity fails if the element is taller than 2048px, IE7 Vista和IE8/Vista - Opacity not honored on large elements这两篇文章。从文章来看,好像这个尺寸并不是固定的4096,这个尺寸貌似跟显卡有关,有些显卡在尺寸大于2048时alpha就失效了。
Satyen Desai总结了这么一段话:
It fails precisely when the height of the element crosses 2048 (for a laptop with ATI card X), or 4096 (for a desktop with ATI card Y) based on some
testing I asked a user to try.
到这里,问题原因基本算清楚了:IE8 Alpha滤镜渲染机制有些问题,在应用Alpha滤镜的元素的宽或高大于某个值时(如4096/2048)时,该滤镜就失效了。
尽管搞清楚了原因,并不是ie8不支持alpha,或者并不是安全策略问题,而是ie8的bug。但是还是有些小郁闷,既然之前浏览器版本能很好支持Alpha,为什么到ie8就出问题了呢??
发现了问题,后面就是想办法解决这个问题,除了之前所讲的IE7兼容模式的办法,我暂时只有两个WS的办法:(1)对非IE6统一采用透明PNG来做半透明。(2)ie8下对超出特定高度的部分重新创建一个遮罩层(这带来了维护遮罩层的复杂度)。
如果哪位老大有更好的办法,欢迎指点与我,在此先多谢了~


猜你喜欢
- 使用apidoc管理RESTful风格Flask项目接口文档方法apidoc项目地址flask扩展包地址文档示例地址1.安装nodejssu
- Python中强大的选项处理模块。关于Python之OptionParser模块使用详解可以参考这篇。示例#!/usr/bin/python
- 背景在vscode刚刚装好的时候,对于开发人员来说可能需要写一些模块的测试,而这个模块可能又引用了其他模块,如果是同级目录的话可能会出现Mo
- 1.什么是并发编程并发编程是实现多任务协同处理,改善系统性能的方式。Python中实现并发编程主要依靠进程(Process):进程是计算机中
- 最近开始学习Python,但只限于看理论,编几行代码,觉得没有意思,就想能不能用Python编写可视化的界面。遂查找了相关资料,发现了PyQ
- 1.概述ChatGPT是一款基于GPT-3.5架构的大型语言模型,它能够进行自然语言处理和生成对话等任务。作为一款智能化的聊天机器人,Cha
- 将时间信息“2018-02-04 18:23:35“ 解析成字典形式的结果如:{‘year':2018,‘month
- 1.VUE验证邮箱export const isEmail = (s) => { return /^([a-
- 笔者在网站开发中,采用PHP4.0+MySQL3.23.38建立了多种应用。下面,以一个简单的聊天室设计为例,介绍PHP+MySQL在网页开
- 1、缘由在日常开发中,我们经常需要监控应用程序的状态,及时发现问题并采取措施解决。而通过邮件发送报警信息则是一种常见的实现方式。Python
- 网上有很多关于PHP在IIS下配置的教程,但都是一些很理性化的东西,我从里面整理出来这个教程 发出来为了方便参考,有什么问题也可以大家一起交
- 这是一个access较为豪华的包装范例,他调用了flash的流媒体控件,利用flash的交互与通信功能,借以达到了我们装扮软件的目的。fla
- 建造者模式建造者模式用于创建复杂的对象。使用建造者模式可以使复杂的过程层次明了、清晰,把对象的创建以及使用进行了解耦。实际上从代码的角度上看
- 一.使用库说明Golang中连接kafka可以使用第三方库:github.com/Shopify/sarama二.Kafka Produce
- 1983年1月19日,苹果公司发布乔布斯领导研制的新一代电脑Lisa,当时Lisa电脑的设计人员就认为,必须将立即执行的命令和需要用户附加输
- 近来实验室的师姐要 * 文,由于论文交稿时间临近,有一些杂活儿需要处理,作为实验室资历最浅的一批,我这个实习生也就责无旁贷地帮忙当个下手。今天
- 摘要在机器视觉中,对于图像的处理有时候因为放置的原因导致ROI区域倾斜,这个时候我们会想办法把它纠正为正确的角度视角来,方便下一步的布局分析
- 在matlab中,存在执行直接得函数来添加高斯噪声和椒盐噪声。Python-OpenCV中虽然不存在直接得函数,但是很容易使用相关的函数来实
- 1,filesize()函数返回错误的值。 使用curl将某个页面下载到本地时,需要将下载到的临时文件tmpHtml.txt的内容读取到一个
- code原文档 1.txt :HelloNanjing100实现代码:file_ = "1.txt"r_file = o