inline-block div下移

预览

<body>
  <div class="birth2017-part1">
    <div class="part1-p4">
      <ul class="part1-p4-ul1">
        <li class="part1-p4-gift">
          <div class="prize-grade">
            <span>礼盒</span>
          </div>
        </li>
        <li class="part1-p4-gift"></li>
        <li class="part1-p4-gift"></li>
      </ul>
    </div>
  </div>
</body>
.birth2017-part1 > div {
  height: 1510px;
  padding-top: 104px;
}
.birth2017-part1 .part1-p4 {
  margin-top: 40px;
}
.birth2017-part1 .part1-p4 .part1-p4-ul1 {
  background: gold;
  width: 100%;
  text-align: center;
}
.birth2017-part1 .part1-p4 .part1-p4-ul1 .part1-p4-gift {
  background: red;
  display: inline-block;
  width: 290px;
  height: 370px;
}

请问, 第一个div为什么会下移呢?

阅读 5.2k
2 个回答

这现象是 inline-block 元素的 vertical-align 造成的,vertical-align 默认是 baseline
所以如果要你代码中的方块对齐,要么所有 .part1-p4-gift 元素设置 vertical-align: middle,要么所有 .part1-p4-gift 元素内都加上文本。

似乎是因为第一个li里面有个div导致的,其他的两个里面没有所以飘上去了。跟行高有关。可以这样解决:

把第一个li里面的div设置为position: absolute,对应的li设置为position: relative:

见: https://codepen.io/anon/pen/V...

--- 经过楼上的提醒,其实可以直接设置下li元素的vertical-align就可以了:

.birth2017-part1 .part1-p4 .part1-p4-ul1 .part1-p4-gift{
    vertical-align: top; // bottom 也可以
}

见:https://codepen.io/anon/pen/Q...

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题