【问题标题】:Vertically align two side by side elements to each other将两个并排元素垂直对齐
【发布时间】:2015-10-23 23:55:53
【问题描述】:

我有两个并排的元素:图表和数据表。 DataTable 可以通过与页面交互来改变大小,并且图表应该在调整窗口大小时改变大小。我希望较短的始终以较高的为中心,即包含 div 的当前高度。如果可能的话,我希望它只在 CSS 中完成。这个答案似乎对我不起作用:CSS - vertically align two or more (side by side) elements in a div;

我有以下几点:

<div id="container">
    <svg id="chart"></svg>
    <div id="dataTable"></div>
</div>

CSS:

#container {
    height: 50%;
    width: 80%;
    margin: 0 auto;
}

#chart {
    overflow: hidden;
    float: left;
    width: 50%;
    display: inline-block;
}

#dataTable {
    overflow: hidden;
    float: left;
    width: 50%;
    display: inline-block;
}

【问题讨论】:

  • 你能做一个jsfiddle或类似的东西吗?谢谢
  • 如果vertical-align 属性不能按照您所指的答案工作,您会考虑使用表格作为父容器而不是div?在td 元素上使用vertical-align: middle 非常可靠。
  • @SunKnight0 将display: table 添加到容器并将display: table-cell 添加到内部元素是否类似?这没有用。这与我的身高是#container 的百分比有关吗?
  • 您不能同时使用浮动块和内联块。我会尝试删除浮动。
  • @Paulie_D 如果我删除浮动,它们会出现在另一个之下,而不是并排显示。

标签: css datatables


【解决方案1】:

您可以尝试使用 Flexbox。对齐项目将确保项目保持居中。

小提琴:https://jsfiddle.net/yftaLtxr/

HTML

<div id="container">
    <svg id="chart">a</svg>
    <div id="dataTable">b</div>
</div>

CSS

#container {
    height: 50%;
    width: 80%;
    margin: 0 auto;
    display:flex;
    align-items:center;
}

#chart {
    height:50vh;
    overflow: hidden;
    float: left;
    width: 50%;
    display: inline-block;
    background-color:#f00;
}

#dataTable {
    overflow: hidden;
    float: left;
    width: 50%;
    display: inline-block;
}

【讨论】:

  • 将项目添加到 DataTable 后,这似乎没有使图表居中。
【解决方案2】:

您不能同时使用浮动块和内联块。我会尝试移除浮动。

然后就是重置内联块元素之间的空白。

* {
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
  margin: 0;
  padding: 0;
}
#container {
  width: 80%;
  margin: 0 auto;
  border: 1px solid green;
  font-size: 0;
  /* whitespace fix */
}
#container > * {
  font-size: 1em;
  /* reset font-size */
}
#chart {
  width: 50%;
  display: inline-block;
  vertical-align: middle;
  background: red;
  height: 50px;
}
#dataTable {
  width: 50%;
  display: inline-block;
  vertical-align: middle;
  height: 150px;
  background: blue;
}
<div id="container">
  <svg id="chart"></svg>
  <div id="dataTable"></div>
</div>

【讨论】:

  • 它最初将表格与图表对齐,但当表格增长并且图表发生变化时,它不会将图表与表格对齐。
  • 现在可以使用了!我忘记了我正在翻译图表的一个内部元素,这似乎会干扰它。我删除了它,它起作用了! :)
猜你喜欢
  • 1970-01-01
  • 2012-09-16
  • 2015-12-14
  • 1970-01-01
  • 1970-01-01
  • 2015-05-24
  • 2014-04-02
  • 2015-07-15
  • 2013-05-29
相关资源
最近更新 更多