正常情况下,在ie8下设置opacity是无效的,ie8下的兼容设置是:
opacity:.5; filter:alpha(opacity=50);
一般情况下是没有问题的,像jpg,gif之类的,但是当图片是png格式且背景透明,边界是不均匀的半透明图片(比如三角形)时,filter设置会使图片出现杂边,(像正方形这种边界整齐的图片不会出现这个问题)如图:
所以比较这两张图片的边界差异:
从网上搜索一些解决方法尝试效果:
filter:progid:DXImageTransform.Microsoft.AlphaImageLoader (src="******.png", enabled=true, sizingMethod=scale); 这种方法可以去除杂边,但也会使opacity失效,想要设置图片透明过度是无效的。相当于没有设置opacity,总结来说相当于是无效的,因为ie8本身是支持png24的图片显示的。
filter:progid:DXImageTransform.Microsoft.Alpha(opacity=50);同filter:alpha(opacity=50);效果一样,杂边依然存在。
-ms-filter:progid:DXImageTransform.Microsoft.Alpha(opacity=50); 这种设置貌似是无效的。
所以个人认为,ie8下仅用css无法设置透明背景图片的opacity过度效果,可以通过visibility或display来做简单的隐藏显示效果。
通过js配合可能能实现吧,后续考虑一下。