如何在所有浏览器中获得完美的图像边框半径?

时间:2011-12-09 11:13:23

标签: css css3 cross-browser

目前,我在 Chrome Safari Mobile Safari Opera 中得到了这样的结果。边缘粗糙。

img {border-radius: 10px; border:3px solid red}

enter image description here

Google Chrome Opera iPad http://jsfiddle.net/4PLUG/2/show/

中查看此示例

Borders在 Firefox 中很好。

并且在 IE9 边框边缘很好,但它有一个不同的问题。它显示了边框和图像之间的一些空间

enter image description here

如何在所有其他浏览器中获得类似Firefox的结果?

7 个答案:

答案 0 :(得分:10)

您可以为img标记添加额外的div,如下所示:

body {padding:100px}

img {
   vertical-align:bottom;
    position:relative;
    z-index:-1;
}
div{
    overflow:hidden;
    -moz-border-radius: 10px;
    -webkit-border-radius: 10px;
    border-radius: 10px;
    border:3px solid red;
    display:inline-block;
}

http://jsfiddle.net/4PLUG/4/

答案 1 :(得分:3)

/ *只需确保所有浏览器呈现引擎的边框半径为* /

.img-border{
    border-radius:15px;
    -moz-border-radius:15px;
    -webkit-border-radius:15px;
    border:3px solid red;
}

答案 2 :(得分:2)

所有浏览器都有不同的CSS功能,并以不同的方式处理它们。

如果您希望角落在所有浏览器中看起来完全相同,您只需将曲线放在实际图像中,而不是依赖CSS。

另一种方法是在div上使用背景图像,这样可以获得更好的剪裁效果。

答案 3 :(得分:0)

您可能希望尝试将图像包装在块元素中,并在所有四个角中浮动4个div,边框图像作为背景。确保图像本身也有边框,如果您有多个尺寸的图像需要“m”,这使得在图像中使用半径边框要容易得多。

答案 4 :(得分:0)

我使用z-index使用两个div完成了这个效果。

<div class="picture-wrapper">
      <div class="mask">
      </div><!-- end mask -->
      <div class="picture">
           <img src="" />
      </div><!-- end picture -->
</div><!-- end picture-wrapper -->

将蒙版上的背景图像设置为中间切出(png)的红色边框,然后使用z-index将其叠加到图片div上方。

应该跨浏览器工作,唯一的是它不考虑图像中的动态宽度/高度,它假设所有图像都是相同的。并且你正在请求额外的掩码图像。

由你决定。

答案 5 :(得分:0)

对于img标签,边框半径百分比完美运行:

.roundcornerimg{border-radius: 50%;}
<img src='imageurl' class='roundcornerimg'/>

答案 6 :(得分:0)

链接身体中的图像:

<img src="image.jpg">

将尺寸添加到图像中:

<img src="image.jpg" width="100%" height="30%">

然后添加内联CSS。

<img src="image.jpg" width="100%" height="30%" style ="border:solid thick black;border-radius="25px">

通过添加内联CSS,边框和边框半径将对图像生效。只是不要在样式表中设置这个特定图像的样式,因为内联CSS的特殊性可能会混乱。