【问题标题】:CSS inline-block wrap issue with mixed text and empty div混合文本和空 div 的 CSS 内联块换行问题
【发布时间】:2016-03-29 01:44:54
【问题描述】:

当设置display: inline-block 时,我遇到divs(混合为空或与文本)的对齐问题。示例见下图:

如您所见,带有文本的divs 不知何故与divs 的其余部分不一致。请参阅 thisJSFiddle 了解我的问题的工作示例。

我已经知道一些解决此问题的方法,但我想了解它发生的原因。我的目标是通过最少的 CSS 更改(可能不修改 HTML)来解决这个问题。

HTML

<div class="bar">
  <div class="actors">
    <div class="actor" style="background-image: url('http://lorempixel.com/32/32/')"></div>
    <div class="actor" style="background-image: url('http://lorempixel.com/32/32/')"></div>
    <div class="actor num"><span>5</span></div>
    <div class="actor" style="background-image: url('http://lorempixel.com/32/32/')"></div>
    <div class="actor num"><div>6</div></div>
  </div>
  <div class="lol">lol</div>
</div>

CSS

.bar {
  height: 40px;
  border-bottom: 1px solid #000;
}
.actors {
  float: left;

}
.actor {
  display: inline-block;
  width: 34px;
  height: 34px;

  background-color: gray;
  border-radius: 16px;
  border: 1px solid red;
}
.num {

}
.lol {
  float: right;
}

【问题讨论】:

  • 尝试为inline-block元素添加vertical-align:middle

标签: html css display


【解决方案1】:

原因是每个文本都有默认值vertical-align。它具有初始值baseline,因此方向位于基线上。

修复它的最简单和最聪明的方法是将其设置为vertical-align: top;

.actor {
    vertical-align: top;
}

演示:JSFiddle

【讨论】:

    【解决方案2】:

    我更喜欢使用

    .actor {
        vertical-align: middle;
     }
    

    top 在这里解决了你的问题,但它把它们都推到了最前面。底部则相反。从技术上讲,它们仍然以任何一种方式对齐。那么为什么不将它们对齐在实际的中间,只是为了防止任何进一步的冲突。

    JFiddle

    【讨论】:

      猜你喜欢
      • 2018-08-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多