2016-02-07 113 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 +基本上... –