用jQuery和CSS3给图片添加圆角

你可能已经注意到我博客上的图片是带有圆角的,以免你没看过,先来张照片看看吧,这似乎真的是我第一次拍照片。

waitan

这可是用我们纳税人的血汗钱堆出来的灯火辉煌又毫无实际用途的外滩啊,有这些钱我能买多少MBP,买多少法拉利、兰博基尼啊TAT 看来我也不是什么好东西。。。

然后再来一头黄牛,都是用MOTO Milestone拍的

waitan2

展示完成依然是讲解简单的实现方法。哈哈,上两张照片我就可以少写点字了。。。


我们首先把需要加圆角的图片绑定一个事件wrapme

var imgs = $('.body img');

imgs.bind('wrapme', function(){
  $(this).wrap(function(){
    return '<span style="background-image:url(' + $(this).attr('src') + '); height: '+ $(this).height() + 'px; width: '+ $(this).width() + 'px;" class="rounded" />';
  });
});

绑定了事件自然就是要触发事件的

var img = new Image();

imgs.each(function(){
  img.src = $(this).attr('src');
  if (img.complete) {
    $(this).trigger('wrapme');
  } else {
    $(this).load(function(){ $(this).trigger('wrapme'); });
  }
});

你可能觉得我这样写太啰嗦,不过简单的$('img').load()是根本无法胜任,因为图片一般只有在第一次访问才会load(),之后你看到的都已经是浏览器的缓存啰

最后是用CSS来给“图片”加上圆角,为什么加个引号呢,因为我们在进行视觉欺骗啊!你已经注意到我们把图片用一个span给包起来了,于是

.rounded {
  display: inline-block;
  -moz-background-size: 100% 100%;
  -moz-border-radius: 7px;
  -moz-box-shadow: 0 2px 5px #777777;
  -webkit-border-radius: 7px;
  -webkit-box-shadow: 0 2px 5px #777777;
  -webkit-background-size: 100% 100%;
  border-radius: 7px;
  box-shadow: 0 2px 5px #777777;
  background-size: 100% 100%;
}
.rounded img {
  opacity: 0;
}

这里面我第一次用到的CSS語法是background-size: 100% 100%,真是个好东西,可以控制背景图片的填充方式

嗯,这所有的一切在IE里都无法工作,我很开心

TAGS:CSS,jQuery

12 COMMENTS >>LEAVE<<

  1. 流年

    ubuntu Opera 10.10下不但图片没有圆角,就连文章,评论之类的也没有圆角;Chrome下可以。

  2. ABitNo
    @流年

    看来Opera还要看看,这浏览器还没装

  3. vehiclee

    我发现那个效果很有意思...
    就是滚动的时候,图片被压缩.

  4. ABitNo
    @vehiclee

    嗯?是什么意思?

    你换名字了我也认识你的头像!

  5. wayne

    还是喜欢css3来实现。。。虽然不支持某些浏览器。。。

  6. ABitNo
    @wayne

    这不就是吗,你是说不需要js只用CSS3就可以吗,讲解下啊。。。

  7. tmdab123

    Google Reader 上看图片还真不是圆角的!

  8. vehiclee
    @ABitNo

    滚页的时候,图片如果在浏览器上部,继续滚的时候,图片高度自动会减小,直到整个图片消失.这个效果

  9. vehiclee
    @ABitNo

    把.rounded这个类选择器添加到img标签上

  10. ABitNo
    @vehiclee

    这样怎么行,用CSS图片不会有圆角的,你试过可以吗?

    我又试了下还是不行--

    你说的那个效果也没见到,无法理解。。。

  11. ABitNo
    @tmdab123

    囧啊--

    你要能看到圆角就神奇了。。。

  12. vzomik

    嗯,这所有的一切在IE里都无法工作,我也很开心~

LEAVE A RESPONSE >>CANCEL<<

loader