2016-09-12 61 views
-3

我需要垂直对齐CSS的盒子而不使用display: inline-block。由于我不知道我的元素的高度,我使用了描述的方式(CSS表格方法)hereCSS垂直对齐表方法不起作用

<div style="background-color: black"> 
    <div style="background-color: aqua; display: table; margin: auto;"> 
     <div style="background-color: aliceblue; width: 200px; float: left; display: table-cell; vertical-align: middle;"> 
      <p>A</p> 
      <p>A</p> 
      <p>A</p> 
     </div> 
     <div style="background-color: green; height: 20px; width: 100px; float: left; display: table-cell; vertical-align: middle;"></div> 
     <div style="background-color: aliceblue; width: 250px; float: left; display: table-cell; vertical-align: middle;"> 
      <p>B</p> 
      <p>B</p> 
      <p>B</p> 
      <p>B</p> 
     </div> 
    </div> 
</div> 

但是,此测试页上的垂直对齐完全没有效果。根据这些div的计算CSS,显示值被设置为阻止!我怎样才能让这些div出现在中间?

+3

尝试清除浮动:从DIV左 - 显示:表格 - 单元和浮动:左边没有任何意义 - 请参阅下面的codepen我的答案 – Johannes

回答

2

擦除float:left从的DIV - display:table-cellfloat:left在一起是没有意义的

Codepen:http://codepen.io/anon/pen/ORrNdW

加成后评论:

像这样:codepen.io/anon/pen/NRxALO? 我在包含较小元素的每个表格单元格中插入/嵌套另一个DIV,并将背景颜色分配给表格元素本身。

+0

但这种方式的元素的高度值被忽略 - 它们都具有相同的高度。但是,它应该看起来像[this](https://codepen.io/anon/pen/ZpQOQw),没有固定的边距。 – schoeberl

0

从多种方式中,您可以通过将父项设置为position:relative;及其子项为position:absolute; top:50%; transform:translateY(-50%);来实现此目的。虽然这个问题以前已经回答了很多次。

+0

我没有得到与您的风格一起工作的例子。我认为你必须设定一个固定的高度。它应该看起来像[this](https://codepen.io/anon/pen/ZpQOQw),但没有固定的边距或固定的高度。 – schoeberl

0

好吧,我终于找到答案。您必须使用flexbox样式(display:flex)。使用此方法,您可以在不指定高度的情况下将元素居中。 This页面描述了如何使用它。