兼容各浏览器的CSS倒影效果
2012-12-27 01:47
309 查看
无需flash,完全用css就可以做出超炫的图片倒影效果。网上流传很多种版本,经过本人的一番研究,做成能够兼容firefox、chrome、IE等各主流浏览器的版本,跟大家分享一下。最终完成的效果
新浏览器的实现
指的是firefox、chrome和IE9。新浏览器都支持CSS3新添的transform属性,所以实现倒影效果非常简单。从下面的代码看到,各家浏览器对transform的实现有点不同
-webkit-transform: scaleY(-1); /* webkit内核浏览器的实现,例如safari */
-moz-transform: scaleY(-1); /* firefox 的实现 */
-ms-transform: scaleY(-1); /* IE 的实现 */
-o-transform: scaleY(-1); /* Opera的实现 */
HTML
CSS
在倒转的图片上面还加了一个DIV.overlay层,做出渐变的效果,使倒影看起来更真实。
兼容旧浏览器的实现
考虑到还有相当多的人在使用旧版浏览器,程序员绞尽脑汁为这部分人做兼容。这里指的是IE7/IE8。IE6怎么办?提示用户升级浏览器吧。
旧IE不支持transform属性,可以使用滤镜 filter:flipv 来生成图片倒转,但会跟IE9的transform冲突。所以要用到各种 hack 来解决。修改后的CSS如下,添加了IE9 hack,覆盖掉上面的filter:flipv的属性。
运行一下,在各版本的浏览器能看到最终的效果了。
新浏览器的实现
指的是firefox、chrome和IE9。新浏览器都支持CSS3新添的transform属性,所以实现倒影效果非常简单。从下面的代码看到,各家浏览器对transform的实现有点不同
-webkit-transform: scaleY(-1); /* webkit内核浏览器的实现,例如safari */
-moz-transform: scaleY(-1); /* firefox 的实现 */
-ms-transform: scaleY(-1); /* IE 的实现 */
-o-transform: scaleY(-1); /* Opera的实现 */
HTML
<div class="wrap"> <div class="image"><img src="1.jpg" /></div> <div class="down"> <div class="reflection"></div> <div class="overlay"></div> </div> </div>
CSS
body{background:#000;color:#f00} .wrap{position:relative;} .image{margin-bottom:3px;} .down{position: relative;} .reflection{width:421px;height:180px;background:url(1.jpg) bottom center no-repeat; -webkit-transform: scaleY(-1); -moz-transform: scaleY(-1); -ms-transform: scaleY(-1); -o-transform: scaleY(-1); transform: scaleY(-1); opacity:0.5; filter:alpha(opacity='50'); } .overlay{position: relative;width:421px;height:180px;bottom:149px; background-image: -moz-linear-gradient(center bottom, rgb(0,0,0) 20%, rgba(0,0,0,0) 90%); background-image: -o-linear-gradient(rgba(0,0,0,0) 10%, rgb(0,0,0) 30%); background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0.20, rgb(0,0,0)), color-stop(0.90, rgba(0,0,0,0))); filter: progid:DXImageTransform.Microsoft.Gradient(gradientType=0,startColor=0, EndColorStr=#000000); }
在倒转的图片上面还加了一个DIV.overlay层,做出渐变的效果,使倒影看起来更真实。
兼容旧浏览器的实现
考虑到还有相当多的人在使用旧版浏览器,程序员绞尽脑汁为这部分人做兼容。这里指的是IE7/IE8。IE6怎么办?提示用户升级浏览器吧。
旧IE不支持transform属性,可以使用滤镜 filter:flipv 来生成图片倒转,但会跟IE9的transform冲突。所以要用到各种 hack 来解决。修改后的CSS如下,添加了IE9 hack,覆盖掉上面的filter:flipv的属性。
body{background:#000;color:#f00} .wrap{position:relative;} .image{margin-bottom:3px;} .down{position: relative;} .reflection{width:421px;height:180px;background:url(1.jpg) bottom center no-repeat; -webkit-transform: scaleY(-1); -moz-transform: scaleY(-1); -ms-transform: scaleY(-1); -o-transform: scaleY(-1); transform: scaleY(-1); opacity:0.5; filter:flipv alpha(opacity='50'); /*ALL IE*/ } @media all and (min-width:0) { .reflection{filter:alpha(opacity='50') \0/;} /*IE9*/ } .overlay{position: relative;width:421px;height:180px;bottom:149px; background-image: -moz-linear-gradient(center bottom, rgb(0,0,0) 20%, rgba(0,0,0,0) 90%); background-image: -o-linear-gradient(rgba(0,0,0,0) 10%, rgb(0,0,0) 30%); background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0.20, rgb(0,0,0)), color-stop(0.90, rgba(0,0,0,0))); filter: progid:DXImageTransform.Microsoft.Gradient(gradientType=0,startColor=0, EndColorStr=#000000); }
运行一下,在各版本的浏览器能看到最终的效果了。
相关文章推荐
- CSS图片倒影效果兼容firefox、IE等各主流浏览器
- 兼容各浏览器中的PNG透明效果CSS定义
- 兼容主流浏览器的CSS透明效果
- CSS 实现图片灰度效果 兼容各种浏览器
- 兼容N多浏览器的CSS阴影效果
- CSS+Canvas实现图片灰度效果,兼容所有浏览器
- CSS实现兼容性的渐变背景(gradient)效果兼容众多浏览器
- CSS阴影效果(兼容N多浏览器)
- jQuery+css实现的时钟效果(兼容各浏览器)
- CSS 实现图片灰度效果 兼容各种浏览器
- 关于css部份技巧, div在IE6/IE7/IE8/FF 不同浏览器 中的效果兼容
- 纯CSS模拟带有立体效果的圆角按钮,长度自适应,兼容所有浏览器,无CSS Hack!
- CSS阴影效果(兼容各种浏览器)
- CSS控制字符宽度省略号效果 兼容浏览器
- CSSJS弹出层效果,兼容所有浏览器
- css技巧div在IE6/IE7/IE8/FF 不同浏览器 中的效果兼容
- CSS背景图拉伸效果兼容FF/Chrome/IE等主流浏览器(亲测)
- css实现【文章未完末尾处的文字颜色变淡效果】兼容常用浏览器
- css中background:-webkit-gradient实现背景渐变效果,并且兼容各个浏览器
- CSS定义的PNG透明效果兼容各浏览器