在页脚中垂直对齐多个元素,高度可变

时间:2015-04-24 09:03:14

标签: html css

我有一个可变高度的页脚。最大的元素是通过页脚的填充自动居中的图像。在图像旁边有一个小导航和下面的版权声明。在最右边有一个按钮可以回到顶部。

我已经包含了一个小提琴,我将所有元素垂直居中,但我通过在某些元素上添加高度来获得结果。现在我的问题是,是否有办法实现这个结果,但没有增加最大元素的高度?

My fiddle

.footer {
      background: darkgray;
    }
    .wrap {
      position: relative;
      width: 960px;
      margin: 0 auto;
      padding: 30px 0;
    }
    .wrap:after {
      content: "";
      display: table;
      clear: both;
    }
    .left {
      width: 29%;
      float: left;
    }
    .left img {
      height: 160px;
    }
    .center {
      text-align: center;
      float: left;
      width: 50%;
      height: 160px;
    }
    .center-wrap {
      display: inline-block;
      vertical-align: middle;
    }
    .center:before {
      content: '';
      display: inline-block;
      height: 100%;
      vertical-align: middle;
      margin-right: -0.25em;
    }
    .right {
      position: relative;
      float: left;
      width: 20%;
      height: 160px;
    }
    .right a {
      position: absolute;
      right: 0;
      top: 50%;
      margin-top: -25px;
    }
    
    /* Styles */
    nav ul {
      list-style: none;
      padding: 0;
      margin: 0;
    } 
    nav ul li {
      display: inline-block;
      margin-left: 20px
    }
    nav ul li:first-child {
      margin-left: 0;
    }
    .right a {
      display: block;
      width: 50px;
      height: 50px;
      background: black;
    }
<div class="footer">
      <div class="wrap">
    
        <div class="left">
          <img src="http://placehold.it/500x500" alt="" />
        </div>
        
        <div class="center">
          <div class="center-wrap">
            <nav>
              <ul>
                <li>item 1</li>
                <li>item 2</li>
                <li>item 3</li>
                <li>item 4</li>
              </ul>
            </nav>
            <p>&copy; 2015 copyright COMPANY NAME // All Rights Reserved</p>
          </div>
        </div>
    
        <div class="right">
          <a href="">top</a>
        </div>
    
      </div>
    </div>

1 个答案:

答案 0 :(得分:1)

只需3行CSS即可垂直对齐任何内容。

.element {
  position: relative;
  top: 50%;
  transform: translateY(-50%);
}

坚果。

不要忘记供应商前缀。