我的图像宽480像素,宽640像素。
我希望使用CSS在150px宽的网页上将它们显示为圆圈。但我希望看到图像的中心。
因此,拍摄原始图像顶部和底部的80px会生成带有我想要看到的图像的正方形。然后我想把它变成一个圆圈。
我尝试的所有内容都会延伸图像,因为大多数示例都是使用方形图像开始。
任何人都可以提供帮助
答案 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" />