ie8背景不能半透明,不能识别filter:alpha(opacity=70);-moz-opacity:0.7;opacity: 0.7;等一系列半透明的css样式设置。
这几天做个效果,需要半透明效果,结果发现firefox,ie7,ie6,google chrome都可以实现半透明效果,就是ie8不能实现半透明效果。觉得很奇怪,就上开心网试了试,发现在ie8下可以实现半透明,比如在“朋友买卖”里的“讨好主人”或“争车位”里,当弹出对话框(lightbox效果)的时候,背景色都是半透明的。
在网上看说是ie8的安全级别造成的,但我没按那个弄。
最后鼓捣了好几天,冥思苦相,不停测试,发现当页面内容让页面很长的时候就不能实现背景半透明小。由于时间问题,我暂时还没想具体怎么避免这个问题。以后想出来了再继续写。
经过测试发现,在ie8下,如果半透明的背景层(用jQuery控制高度等于$(document).height())高度大于4096px的时候就不会有半透明效果。而且在ie6下,用JQuery的height()方法设置div高度的话会比设置的值高出4px。
我的解决方法就是先获得整个文档的高度和宽度,宽度一般不会超过4096px,然后用高度除以4092,这个主要是为了ie6准备的,省得高度超4px,而且如果比4096px再小一点,对于ie8来说不是更好吗,刚才说整个高度除以4092,求出整数和余数,然后用JQuery的clone()方法,然后把最后一个div的高度设置成刚才求出来的余数,每个div的offset.top等于上一个div的offset.top+height()。
不知道大家看明白没有,本人语言表达能力比较差。。。
这个是我用这个方法的页面。日期:2010-4-25,没准以后页面会改。
http://mishu.taokuaixun.com/public/help.html
日期:2010-7-15,头两天发现4096px高度在ie8下还是有问题,还是不透明的,弄了半天,发现在拼接几个背景块的时候,可能是由于页面内容还没玩去爱加载完的原因,有时候会有1个像素的错位,比如重叠,或没连接上有个空,最后半透明的问题是我把每块的div高度改成了3932px。地址还是上面那个地址,大家可以看看在ie8下是否正常。