垂直对齐图像

时间:2014-06-19 06:43:46

标签: html css responsive-design

我在这里搜索过,但由于div的动态特性,我似乎找不到解决问题的方法。

对于我的网站,我想要一个横幅图片,可以缩小为廉价的响应。我有那个部分,我只是不能让我的图像垂直居中。我创建了jsFiddle,代码如下。

HTML

<div class="banner col-lg-12">
    <img src="http://laurentvandessel.be/wp-content/uploads/2014/03/placeholder.png" /> 
</div>

CSS

.banner {
    margin-top: 51px;
    margin-bottom: 20px;
    overflow:hidden;
    text-align: center;
    height:300px;
    display: inline-block;
    vertical-align: middle;
}

.banner img {
    position:relative;
    width:100%;
    left: 100%;
    margin-left: -200%;
    display:inline-block;
    vertical-align: middle;
}

另外,如果你有更好的方式去做我已经做过的事情,也会受到赞赏。

谢谢大家伙。

3 个答案:

答案 0 :(得分:1)

这有点棘手,因为有时图像比容器高。你可以这样做(见最后三行):

.banner img {
  position:relative;
  width:100%;
  left: 100%;
  margin-left: -200%;
  display:inline-block;
  vertical-align: middle;
  top: 50%;
  -webkit-transform: translateY(-50%);
  transform: translateY(-50%);
}

如果适合,你也可以使用这种方法进行水平居中:

.banner img {
  position:relative;
  width:100%;
  top: 50%;
  left: 50%;
  -webkit-transform: translate(-50%, -50%);
  transform: translate(-50%, -50%);
}

答案 1 :(得分:0)


你是否需要具有动态高度的img动态div高度! 设置你的CSS

.banner{height:auto; ...}

如果你需要一个垂直中心,也需要水平div为TEXT和图像,你可以查看我的jsFiddle测试。

答案 2 :(得分:0)

Demo

CSS

.banner {
    margin-top: 51px;
    margin-bottom: 20px;
    /*overflow:hidden;
    text-align: center;*/
    height:300px;
    /*display: inline-block;
    vertical-align: middle;*/
    background: url(http://laurentvandessel.be/wp-content/uploads/2014/03/placeholder.png) no-repeat center center;
    -webkit-background-size: cover;
    -moz-background-size: cover;
    -o-background-size: cover;
    background-size: cover;
}
/*.banner img {
    position:relative;
    width:100%;
    left: 100%;
    margin-left: -200%;
    display:inline-block;
    vertical-align: middle;
}*/

HTML

<div class="banner col-lg-12">
    <!--<img src="http://laurentvandessel.be/wp-content/uploads/2014/03/placeholder.png" />-->
</div>