经常碰到这种情形,要实现图片上有一层遮罩和按钮,鼠标滑过时遮罩颜色变深且按钮图片变化,磕磕碰碰终于弄出来题目所述兼容的解决方案。
对于遮罩的实现,将遮罩层、按钮、图片放置在同一个div中,根据absolute的位置跟随特性,将遮罩层和按钮放在图片的前面,position均设置为absolute不占据任何空间。设置遮罩层的颜色和透明度,由于颜色和透明度会设置到整个遮罩层及其子元素的透明度,如果将按钮图片放在遮罩层内,按钮图片也会有透明度,达不到所要的视觉效果,所以将遮罩层和按钮图标设置为平级。
然而,在IE7、8中,background-color中rgba并不能表现出遮罩层的效果,所以要将红框内颜色及透明度的写法换一种:
,背景设置为黑色,opacity设置透明度,filter是IE滤镜(为使IE兼容显示透明度)
这样就实现了题目提到的各个浏览器的一致的视觉效果: