2017-10-18 16 views
2

を使用して下部にカットされている。画像は、私は、このCSSコードを使用して、円の中に、ユーザーのプロフィールの写真を表示しようとしていますCSS

.circle { 
 
    margin: auto; 
 
    width: 200px; 
 
    height: 200px; 
 
    border-radius: 50%; 
 
    -webkit-border-radius: 50%; 
 
    -moz-border-radius: 50%; 
 
    overflow:hidden; 
 
    } 
 
    .circle img{ 
 
     width:100%; 
 
    }
<div class='circle'> 
 
    <img src='https://static.pexels.com/photos/2438/nature-forest-waves-trees.jpg'> 
 
     </div>

問題があり、画像は下で切断されている:

enter image description here

しかし、私は完全なCIRに表示する画像を期待しましたcle。なぜこれが起こっているのですか?どのように修正できますか?

+1

正方形の画像を使用していないためです。正方形の画像を使用するか、最小の高さと最小幅を100%とし、親にoverflow:hiddenを入れます – Pete

+0

すべてのブラウザで動作するソリューションを探していますか?画像のサイズが異なるがすべての良いものと同様に扱う場合、IEでは動作しませんhttps://developer.mozilla.org/en-US/docs/Web/CSS/object-fit – Valentin

答えて

0

、あなたはそうしないと、画像が100%の最短辺を行う必要がある、あなたは全体のイメージを示すことにしたい場合は正方形の画像を使用する必要があります - 中

.circle { 
 
    margin: auto; 
 
    width: 200px; 
 
    height: 200px; 
 
    border-radius: 50%; 
 
    -webkit-border-radius: 50%; 
 
    -moz-border-radius: 50%; 
 
    overflow: hidden; 
 
} 
 

 
.circle img { 
 
    height: 100%; 
 
}
<div class='circle'> 
 
    <img src='https://static.pexels.com/photos/2438/nature-forest-waves-trees.jpg'> 
 
</div>

:あなたは余分な幅が非表示になりますので、高さを100%にする必要があるので、この場合は画像が風景です
+0

downvoter careにコメントしますか?私は円を塗り潰して元の画像のアスペクト比を維持しました。受け入れられた答えでさえそれを管理していません。 – Pete

+0

片側を別のものよりも長くするという静的な判断を下すことは、本当にこれを行う素晴らしい方法ではありません。私は、非正方形の画像を動的にサイズ調整することができる他の解決策をいくつか見ていきます。 –

+0

@DerekBrown彼は解決策を望んでいましたが、これは解決策ではありません。幅の変更:100%から高さ:100% - それは解決策であり、正しい答えを下降させるあなたのような人々はこのサイトを台無しにしています。あなたがそれを行う方法に同意しないからといって、それが間違っていてダウンボイトの価値がないわけではありません。私はあなたの背景イメージの答えがハックだと感じている - あなたはそれを背景イメージを使ってイメージを印刷することができないだろうが、私はあなたの答えをdownvoting表示されません – Pete

-2

デフォルトでは、imgタグはイメージファイルのサイズからサイズを取ります。この場合、画像は200x200より大きく、画像はdivのサイズよりも小さくなりました。 imgタグにheight: 100%を追加することで、問題は解決されます。

.circle { 
 
    margin: auto; 
 
    width: 200px; 
 
    height: 200px; 
 
    border-radius: 50%; 
 
    -webkit-border-radius: 50%; 
 
    -moz-border-radius: 50%; 
 
    overflow: hidden; 
 
} 
 

 
.circle img { 
 
    width: 100%; 
 
    height: 100%; 
 
}
<div class='circle'> 
 
    <img src='https://static.pexels.com/photos/2438/nature-forest-waves-trees.jpg'> 
 
</div>

上記回答は200×200であることが画像を伸ばすことに留意されたいです。あなたはこのストレッチをしたくない場合は、私が代わりにbackground-imageを使用します。

.circle { 
 
    margin: auto; 
 
    width: 200px; 
 
    height: 200px; 
 
    border-radius: 50%; 
 
    -webkit-border-radius: 50%; 
 
    -moz-border-radius: 50%; 
 
    overflow: hidden; 
 

 
    background-image: url('https://static.pexels.com/photos/2438/nature-forest-waves-trees.jpg'); 
 
background-size: cover; 
 
background-repeat: no-repeat; 
 
background-position: center; 
 
}
<div class='circle'> 
 
</div>

+1

画像が伸びますが、これはめったに望ましい結果ではない。 – DBS

+0

@DBSいいえ、外側のdivは画像の比率と同じ固定サイズを持っていません。 –

+1

Erm ...それは間違いありません。非正方形の画像を200x200で表示させようとしている場合、あなたの例で見ることができます(その画像は縦方向の伸びが非常に良く表示されませんが、それを入れ替えて意味するものを表示します) – DBS

0

あなたがIEで興味がない場合は、object-fit: coverを確実にする素晴らしい方法です画像を常にすることを利用可能なスペースをカバーしながら、同時にその比率を維持する。私のコメントを1として

.avatar { 
 
    display: inline-block; 
 
    width: 200px; 
 
    height: 200px; 
 
    border-radius: 100%; 
 
    overflow: hidden; 
 
} 
 

 
.avatar img { 
 
    width: 100%; 
 
    height: 100%; 
 
    object-fit: cover; 
 
}
<div class="avatar"> 
 
    <img src="https://static.pexels.com/photos/2438/nature-forest-waves-trees.jpg" /> 
 
</div> 
 

 
<div class="avatar"> 
 
    <img src="https://images.unsplash.com/photo-1504125130065-19cd3d71c27a?dpr=1&auto=format&fit=crop&w=2134&q=60&cs=tinysrgb" /> 
 
</div>

+0

これはIEではサポートされていません。私は、上記で考察した '背景イメージ 'のアプローチは、ブラウザの互換性のためには良いと思う。 https://developer.mozilla。org/en-US/docs/Web/CSS/object-fit –

+0

私の答えではIEサポートの不足について言及しましたが、古いブラウザをサポートするかどうかは、 – Valentin

関連する問題