vertical-align:中间一个浮动div内的div?

时间:2016-11-09 20:31:00

标签: css vertical-alignment

为什么第三列中的黑色条纹不在父div的中间垂直对齐?而是在顶部稍微对齐。有办法解决吗?

https://jsfiddle.net/pr1v6Lhd/4/

HTML:

<table border="1">
  <tbody>
    <tr>
      <td>ADMIN<br>:(</td>
      <td>222387</td>
      <td width='50' style='position:relative'>
        <div class='data'>59853.94</div>
        <div class="bar-chart-bar">
          <div class="bar" style='width:50%; background-color:#B8E4F5'>
          <div style="height:10px; background-color:black; width:100%;vertical-align:middle; display: inline-block"></div>            
          </div>
        </div>
      </td>
      <td width="50">0</td>
      <td>59853.94</td>
      <td>4189.82</td>
      <td>7</td>
    </tr>
  </tbody>
</table>

CSS:

.bar-chart-bar {
  background-color: #e8e8e8;
  display: block;
  position: absolute;
  width: 100%;
  height: 100%;
  top: 0;
  left: 0;
  z-index: -1;
}

.bar {
  float: left;
  height: 100%;
}

.data {

}

.table > tbody > tr > td {
  vertical-align: middle;
}

table {
  font-size: 12px;
}

2 个答案:

答案 0 :(得分:1)

在这种情况下,vertical-align元素的inline-block与其他元素无关,而不是容器本身,您可以添加如下的引用元素:

.bar:before {
  content:"";
  display:inline-block;
  height:100%;
  margin-right:-4px;
  vertical-align:middle;
}

Updated Fiddle

答案 1 :(得分:1)

.bar班级,您可以添加

display:flex;
flex-direction:column;
justify-content:center;

以及删除

vertical-align: middle;
display: inline-block;
来自.data课程的

。结果是Here。这不适合你的原因是vertical-align并不真正按照你想要的方式运行,除非你的元素在表格单元格中。有关垂直对齐的详情,请参阅this