幅480ピクセル、高さ640ピクセルの画像があります。
CSSを使用して、幅150ピクセルのWebページに円として表示したい。しかし、私は画像の中心を見たいです。
したがって、元の画像の上部と下部の80pxを取得すると、表示したい画像の正方形が生成されます。それからそれを円にしたい。
ほとんどの例では正方形の画像を使用して開始するので、私が試みることはすべて画像を引き伸ばします。
誰でも助けてもらえますか
画像を要素の背景として設定し、そのbackground-sizeを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>
別の解決策は、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: This PrimožCiglerの投稿では、 Modernizr を使用して、IEのフォールバックサポートを追加する方法を示していますが、この場合は、 de imageにラッパーを追加する必要があります。
画像が背景画像ではなく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>
別の解決策は、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" />