向div添加文本内容会导致内联块项目崩溃[重复]

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了向div添加文本内容会导致内联块项目崩溃[重复]相关的知识,希望对你有一定的参考价值。

这个问题在这里已有答案:

我想要在同一条线上显示4个圆形图像,最后一个圆圈包含一个数字。我有以下代码接近,但最后一个圆圈通过文本得到了一点点。我不明白为什么圆圈会被撞倒。

谢谢你的帮助。

.avatar {
  flex: none;
  display: inline-flex;
  justify-content: center;
  align-items: center;
  position: relative;
  width: 30px;
  height: 30px;
  border: 1px solid #E2E8ED;
  border-radius: 50%;
  box-shadow: inset 0 1px 3px 0 rgba(225, 232, 236, 0.7);
}
ul {
  list-style-type: none;
  margin: 0;
  padding: 0;
}
li {
  width: 30px;
  height: 30px;
  border-radius: 50%;
  display: inline-block;
  position: relative;
  -webkit-transition: .2s ease;
  transition: .2s ease;
  background: #FFF;
}
li:nth-child(n+2) { margin-left: -20px; }
<ul>
  <li>
    <div class="avatar"></div>
   </li>
   <li>
    <div class="avatar"></div>
   </li>
   <li>
    <div class="avatar"></div>
   </li>
   <li>
    <div class="avatar">
      <span>3</span>
    </div>
  </li>
</ul>
答案

inline-block默认对齐是baseline,这就是它与底部对齐的原因。你必须将vertical-align:top应用于inline-block元素以使顶部对齐。

.avatar {
  flex: none;
  display: inline-flex;
  justify-content: center;
  align-items: center;
  position: relative;
  width: 30px;
  height: 30px;
  border: 1px solid #E2E8ED;
  border-radius: 50%;
  box-shadow: inset 0 1px 3px 0 rgba(225, 232, 236, 0.7);
}
ul {
  list-style-type: none;
  margin: 0;
  padding: 0;
}
li {
  width: 30px;
  height: 30px;
  border-radius: 50%;
  display: inline-block;
  position: relative;
  vertical-align:top;
  -webkit-transition: .2s ease;
  transition: .2s ease;
  background: #FFF;
}
li:nth-child(n+2) { margin-left: -20px; }
<ul>
  <li>
    <div class="avatar"></div>
   </li>
   <li>
    <div class="avatar"></div>
   </li>
   <li>
    <div class="avatar"></div>
   </li>
   <li>
    <div class="avatar">
      <span>3</span>
    </div>
  </li>
</ul>
另一答案

您可以使用vertical-align属性。信息here

.avatar {
  flex: none;
  display: inline-flex;
  justify-content: center;
  align-items: center;
  position: relative;
  width: 30px;
  height: 30px;
  border: 1px solid #E2E8ED;
  border-radius: 50%;
  box-shadow: inset 0 1px 3px 0 rgba(225, 232, 236, 0.7);
  /* added */
  vertical-align: top;
}

ul {
  list-style-type: none;
  margin: 0;
  padding: 0;
}

li {
  width: 30px;
  height: 30px;
  border-radius: 50%;
  display: inline-block;
  position: relative;
  -webkit-transition: .2s ease;
  transition: .2s ease;
  background: #FFF;
}

li:nth-child(n+2) {
  margin-left: -20px;
}
<ul>
  <li>
    <div class="avatar"></div>
  </li>
  <li>
    <div class="avatar"></div>
  </li>
  <li>
    <div class="avatar"></div>
  </li>
  <li>
    <div class="avatar">
      <span>3</span>
    </div>
  </li>
</ul>
另一答案

在你的(.avatar)类中,只需添加此css属性(vertical-align:top;),例如

.avatar {
    flex: none;
    display: inline-flex;
    justify-content: center;
    align-items: center;
    position: relative;
    width: 30px;
    height: 30px;
    border: 1px solid #E2E8ED;
    border-radius: 50%;
    box-shadow: inset 0 1px 3px 0 rgba(225, 232, 236, 0.7);
    vertical-align: top; /* only this property */
}

以上是关于向div添加文本内容会导致内联块项目崩溃[重复]的主要内容,如果未能解决你的问题,请参考以下文章

内联块 DIV 元素之间的额外空间 [重复]

当两个div元素显示为内联块时如何删除它们之间的空白[重复]

jQuery Vertical Tabs使标签内容显示为内联块

什么会导致 iPad(第 3 代)在启动时崩溃但在模拟器中工作?

块元素和行内元素

如何垂直对齐一行文本中的内联块?