为什么div没有扩展到父div的整个宽度

时间:2016-12-02 18:20:41

标签: html css

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

HTML:

<div style="width: 100%; overflow: hidden; height: 65px; background: #00CC00;">
    <div style="width: 60%; overflow: hidden; float: left; background: #3074A3; color: #EDEDED; height: 65px; text-align: center; display: table; vertical-align: middle;">

        <span style="font-size: 35px;display: table-cell;vertical-align: middle;">My Name</span>
    </div>
    <div style="width: 40%; overflow: hidden; float: left; background: #266996; color: #EDEDED; height: 65px; text-align: center; display: table; vertical-align: middle;">
        <span style="font-size: 20px;display: table-cell;vertical-align: middle;">My Job</span>
    </div>
</div>

截图:

enter image description here

为什么最后会有绿地?小提琴是在Chrome中完成的。

2 个答案:

答案 0 :(得分:3)

答案 1 :(得分:1)

在Chrome中,外部div正好比包含的div宽一个像素。

然而,您可以通过不使用display: table;display: table-cell;(如果您只是这样做以使垂直居中工作)来解决这个问题:

<div style="width: 100%; height: 65px; background: #00CC00;">
  <div style="width: 60%; float: left; background: #3074A3; color: #EDEDED; height: 65px; text-align: center;">
    <span style="font-size: 35px; line-height: 65px;">My Name</span>
  </div>
  <div style="width: 40%; float: left; background: #266996; color: #EDEDED; height: 65px; text-align: center;">
    <span style="font-size: 20px; line-height: 65px;">My Job</span>
  </div>
</div>

编辑:第二个代码片段展示了使用绝对定位和transform: translate进行垂直居中的标准方法:

.outer {
  height: 65px;
  background-color: #00cc00;
  display: flex;
}
.inner {
  width: 60%;
  float: left;
  background: #3074A3;
  color: #EDEDED;
  height: 65px;
  text-align: center;
  font-size: 35px;
  position: relative;
}
.inner + .inner {
  width: 40%;
  background: #266996;
  font-size: 20px;
}
.inner > span {
  display: inline-block;
  position: absolute;
  left: 50%;
  top: 50%;
  transform: translate(-50%, -50%);
}
<div class="outer">
  <div class="inner">
    <span>My Name</span>
  </div>
  <div class="inner">
    <span>My Job<br />Good job!</span>
  </div>
</div>