实现圆图像

最近项目需要实现圆图像,自从有了CSS3的border-radius之后,实现变得简单了,但IE8及其以下依然不给力。

1.在网上搜寻解决方案,很多人提及ie-css3.htc文件,于是试了试,确实可以实现一般DIV的圆角,但对于img元素不生效,即便改变它的display属性。

2.接着又把图片作为了该div的背景,然后设置其border-radius,确实可以见到效果,但对背景图要求太高,需要与该div的大小一致,本来想利用css3的背景剪裁,转念一想是IE的hack,就此罢手把。鉴于用户上传图片必定大小不一,继续寻找解决方案。

3.最后,想了个折中的解决方案。

层结构如下:

1 <div class="p-img-radius" style="width:100px;height:100px;position:relative;overflow: hidden;">
2     <img src="images/1b4c510fd9f9d72a1ae4f617d62a2834349bbb3c.jpg" width="100" height="100">
3     <div class="ie-raduis p-disply-none"></div>
4 </div>

其中class为ie-raduis的层在多数浏览器下隐藏,当浏览器是IE678时,便加载其特定样式:

.ie-raduis{display:block;width: 100px;height: 100px;position:absolute;top:0px;left:0px;background: url("../images/ie-raduis.png") top left no-repeat;}

应该想到这个.ie-raduis的背景图就是一张大小与该div一致,但中间抠了个圆形的透明区,然后用绝对定位就能盖住头像的其它部分,只露个圆形区域了。

注意:可能png图片在IE6下显示效果不好,但不用慌,把图片上传到这个网站压缩一下,就会神奇的好了。网址:https://tinypng.com/

 

posted on 2014-07-04 14:21  桃狗屎  阅读(445)  评论(0编辑  收藏  举报