从保持比例的矩形图像创建圆形头像,并使用图像中心

时间:2014-10-31 18:16:31

标签: html css image avatar

我的图像宽480像素,宽640像素。

我希望使用CSS在150px宽的网页上将它们显示为圆圈。但我希望看到图像的中心。

因此,拍摄原始图像顶部和底部的80px会生成带有我想要看到的图像的正方形。然后我想把它变成一个圆圈。

我尝试的所有内容都会延伸图像,因为大多数示例都是使用方形图像开始。

任何人都可以提供帮助

4 个答案:

答案 0 :(得分:50)

您可以将图像设置为元素的背景,将其背景大小设置为cover,然后使用border-radius来舍入边缘。

#avatar {
    /* This image is 687 wide by 1024 tall, similar to your aspect ratio */
    background-image: url('http://i.stack.imgur.com/Dj7eP.jpg');
    
    /* make a square container */
    width: 150px;
    height: 150px;

    /* fill the container, preserving aspect ratio, and cropping to fit */
    background-size: cover;

    /* center the image vertically and horizontally */
    background-position: top center;

    /* round the edges to a circle with border radius 1/2 container size */
    border-radius: 50%;
}
<div id="avatar"></div>

答案 1 :(得分:19)

如果图像需要在HTML而不是背景图像

.wrapper {
  width:150px;
  height:150px;
  margin: 25px auto;
  overflow: hidden;
  border-radius:50%;
  position: relative;
}

.wrapper img {
  position: absolute;
  top:50%;
  left:50%;
  transform: translate(-50%,-50%)
}
<div class="wrapper">
  <img src="http://lorempixel.com/output/business-q-c-640-480-4.jpg" alt="" />
</div>

答案 2 :(得分:19)

另一个解决方案是设置img的大小并使用“object-fit:cover;”。 它将与“background-size:cover”相同,而不会弄乱背景图像。

img {
  object-fit: cover;
  border-radius:50%;
  width: 150px;
  height: 150px;
}
<img src="http://i.stack.imgur.com/Dj7eP.jpg" />

我在Chris Nager的帖子上找到了它。 - 1

编辑: 正如@prograhammer所提到的,这不适用于IE。 Edge仅在<img>标记上支持它。

  

Edge中的部分支持仅指object-fit支持<img> - 2

编辑2: PrimožCigler的This帖子展示了如何使用Modernizr为IE添加后备支持,但在这种情况下,您需要为de image添加一个包装器。

答案 3 :(得分:1)

另一个解决方案是img元素的简单css类:

.avatar {

    -webkit-border-radius: 50%;
    -moz-border-radius: 50%;
    border-radius: 50%;

    -webkit-box-shadow: 0 0 0 3px #fff, 0 0 0 4px #999, 0 2px 5px 4px rgba(0,0,0,.2);
    -moz-box-shadow: 0 0 0 3px #fff, 0 0 0 4px #999, 0 2px 5px 4px rgba(0,0,0,.2);
    box-shadow: 0 0 0 3px #fff, 0 0 0 4px #999, 0 2px 5px 4px rgba(0,0,0,.2);
}

用法:

<img class="avatar" src="http://path.to/image.jpg" />