web-dev-qa-db-ja.com

縦横比を保ち、画像の中心だけを使用して、長方形の画像から円のアバターを作成します

幅480ピクセル、高さ640ピクセルの画像があります。

CSSを使用して、幅150ピクセルのWebページに円として表示したい。しかし、私は画像の中心を見たいです。

したがって、元の画像の上部と下部の80pxを取得すると、表示したい画像の正方形が生成されます。それからそれを円にしたい。

ほとんどの例では正方形の画像を使用して開始するので、私が試みることはすべて画像を引き伸ばします。

誰でも助けてもらえますか

22
user3086854

画像を要素の背景として設定し、その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>
54
meagar

別の解決策は、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にラッパーを追加する必要があります。

23
Brosig

画像が背景画像ではなく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>
19
Paulie_D

別の解決策は、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" />
1
Jacek Gralak