如何将 div 与 "display: inline-block" 连续放置,没有边距?

How to put divs in a row with "display: inline-block", without a margin?

每当我使用 display:inline-block 将 div 放在水平行中时,它们之间总是有一个边距,即使我设置了 margin: 0 !important。有没有办法让 div 之间的像素正好为 0?

这是一个基本示例,我有三个应该连续的黑框,但它们之间有白色 space:(Fiddle)

.div {
  position: relative;
  display: inline-block;
  background: black;
  width: 100px;
  height: 100px;
  margin: 0 !important;
}
<div class="div"></div>
<div class="div"></div>
<div class="div"></div>

你应该把 font-size: 0 给父容器。字体大小为内联块提供了这些小边距。

.div {
  position: relative;
  display: inline-block;
  background: black;
  width: 100px;
  height: 100px;
  margin: 0 !important;
}
.container {
  font-size: 0;
}
<div class="container">
  <div class="div"></div>
  <div class="div"></div>
  <div class="div"></div>
</div>

.divlist {
  position: relative;
  font-size: 0;
}
.div {
  position: relative;
  display: inline-block;
  background: black;
  width: 100px;
  height: 100px;
  font-size: 16px;
}
<div class="divlist">
  <div class="div"></div>
  <div class="div"></div>
  <div class="div"></div>
</div>

这是因为元素之间换行了。你可以像我一样评论它,或者让这些元素相互内联

.div {
  position: relative;
  display: inline-block;
  background: black;
  width: 100px;
  height: 100px;
  margin: 0 !important;
}
<div class="div"></div><!--
--><div class="div"></div><!--
--><div class="div"></div>

我添加了一个定义为 flexbox 的包装器。

.wrapper {
  display: inline-flex;
}

.div {
  position: relative;
  display: inline-block;
  background: black;
  width: 100px;
  height: 100px;
}
<div class="wrapper">
  <div class="div"></div>
  <div class="div"></div>
  <div class="div"></div>
</div>

最好有外部 div 并添加样式字体大小 0

例如:

.div {
  position: relative;
  display: inline-block;
  background: black;
  width: 100px;
  height: 100px;
  margin: 0 !important;
  font-size: 14px;
  color:#fff;
  text-align:center;
}
.main-div {
  font-size:0;
}
<div class="main-div">
<div class="div">1</div>
<div class="div">2</div>
<div class="div">3</div>
</div>

正如 Gleb 所说,将 font-size:0; 放在容器上。您也可以将容器放在 display: inline-flex;display: flex; 中。

使用display: table-cell;

.div {
  position: relative;
  display: table-cell;
  background: black;
  width: 100px;
  height: 100px;
}
<div class="div"></div>
<div class="div"></div>
<div class="div"></div>

我知道这不是最干净的解决方案,但我是这样做的:

.div {
  display: inline-block;
  background: black;
  width: 100px;
  height: 100px;
  white-space: nowrap;
  overflow: hidden;
  margin-right : -0.25em;
}
<div class="div"></div>
<div class="div"></div>
<div class="div"></div>

行内块不良余量众所周知,您会找到其他解决方案here