代码之家  ›  专栏  ›  技术社区  ›  Thayne

如何使用自动溢出在div中居中行

  •  0
  • Thayne  · 技术社区  · 12 年前

    我有许多“行”,我想将它们分组在一起并集中在它们的容器中,有些像这样:

    Centered rows

    然而,行数是可变的,如果有足够的行溢出设置的高度,我希望它滚动。

    我找到的使行正确居中的最佳方法是在容器上使用以下css:

    .container {
        display: table-cell;
        vertical-align: middle;
    }
    

    但是,由于容器没有 display:block 背景 overflow:auto 不起作用。在表格单元格中放置滚动div也不起作用,因为滚动div需要设置高度,这会破坏垂直居中。

    1 回复  |  直到 12 年前
        1
  •  1
  •   Thayne    12 年前

    经过多次实验,我终于找到了以下解决方案:

    html格式:

    <div class="scroll">
        <div class="table">
            <div class="container">
                <div class="row" ></div>
                <div class="row" ></div>
                ...
            </div>
        </div>
    </div>
    

    css:

    .scroll {
        overflow-y: auto;
        height: 80px;
    }
    .table {
        display: table;
        height: 100%;
        width: 100%;
    }
    
    .container {
        display: table-cell;
        vertical-align: middle;
    }
    

    看见 http://jsfiddle.net/ZCdPG/ 以便全面实施。

    虽然它可以工作,但不幸的是,它需要为单个容器嵌套三个级别。Web组件会在一定程度上缓解这种情况,但真正的问题是CSS中没有真正的垂直居中支持,只有通过黑客才能实现常见的用例。