2016-02-07 83 views
0

我在div內部有一個圖像。我通過固定高度的div和overflow: hidden來裁剪圖像。我如何將圖像對齊到中間垂直將div內部的圖像垂直對齊到中間

所以,想象我的目的:

enter image description here

  1. 貓的完整圖像。

  2. 當圖像被裁剪時,它當前的樣子。

  3. 我想如何看。圖像垂直對齊中間,並相應地裁剪。

請注意,圖像的高度不同(用戶上傳)。

jsFiddle進行測試。

HTML:

<div class="container"> 
    <img src="http://i.imgur.com/qRkEJni.jpg"> 
</div> 

CSS:

.container { 
    height:200px; 
    width:200px; 
    float:left; 
    overflow: hidden; 
} 

.container img{ 
    height:auto; 
} 
+0

它的工作對我來說你的代碼中codepen和的jsfiddle –

+2

@SaucedApples請閱讀問題正常。裁剪工作,但我想要垂直**調整圖像到中間**。我甚至添加了一張圖片以避免混淆。 :) –

回答

5

這裏是另一種方法:

.container img { 
    height: auto; 
    top: 50%; 
    position: relative; 
    transform: translate(0,-50%); 
} 

JSFiddle

+0

jsfiddle鏈接是錯誤的,但我看到你要去哪裏。很有意思。瀏覽器與這種方法的兼容性是什麼? –

+0

是的,已更新。它與所有瀏覽器兼容,IE高於10。 – Pedram

4

Flexbox,就可以做到這一點:

.container { 
 
    height:200px; 
 
    width:200px; 
 
    float:left; 
 
    overflow: hidden; 
 
    border:1px solid black; 
 
    display: flex; 
 
    flex-direction: column; 
 
    justify-content: center; 
 
} 
 

 
.container img{ 
 
    height:auto; 
 
    display: block; 
 
}
<div class="container"> 
 
    <img src="http://i.imgur.com/qRkEJni.jpg"> 
 
</div>

或絕對定位。

.container { 
 
    height: 200px; 
 
    width: 200px; 
 
    float: left; 
 
    overflow: hidden; 
 
    border: 1px solid black; 
 
    position: relative; 
 
} 
 
.container img { 
 
    height: auto; 
 
    position: absolute; 
 
    top: 50%; 
 
    left: 0; 
 
    transform: translateY(-50%); 
 
}
<div class="container"> 
 
    <img src="http://i.imgur.com/qRkEJni.jpg"> 
 
</div>

或課程......,使用背景圖片來代替。

.container { 
 
    height: 200px; 
 
    width: 200px; 
 
    float: left; 
 
    overflow: hidden; 
 
    border: 1px solid black; 
 
    position: relative; 
 
    background-image: url(http://i.imgur.com/qRkEJni.jpg); 
 
    background-position: center center; 
 
}
<div class="container"> 
 

 
</div>

+0

使用彈性盒的瀏覽器兼容性是什麼?我之前在android瀏覽器和IE瀏覽器上遇到過一些問題。 –

+0

IE10 +基本上... –