css - 为什么这个表格单元格与相邻的表格单元格重叠?

标签 css css-position css-tables

JSFiddle here.

这是一个 SSCCE,演示了一个带有 display:table 的 div 以及三个具有 display:table-cell 的子 div。问题是 .blog-post-slide 与 .previous-slide-arrow 重叠,而不是相邻。

问题是为什么,我应该如何解决这个问题。

.post-main-area {
  display: table;
  width: 100%;
}
.post-main-area .previous-slide-arrow,
.post-main-area .next-slide-arrow {
  border: 5px solid green;
  /*check*/
  width: 5%;
  display: table-cell;
  position: relative;
  vertical-align: middle;
  left: 20px;
}
.post-main-area .next-slide-arrow {
  left: auto;
  right: 20px;
}
.post-slide {
  border: 5px solid wheat;
  /*check*/
  width: 90%;
  position: relative;
}
<div class="post-main-area">
  <a class="previous-slide-arrow" href="#">&lt;</a>

  <div class="post-slide">.
    <!--<div class="left-part">.</div>
			<div class="right-part">.</div>-->
  </div>

  <a class="next-slide-arrow" href="#">&gt;</a>
</div>

最佳答案

因为您将第一个单元格向右移动了 20px:

position: relative;
left: 20px;

然后,如 Relative positioning 中所述, 它与下面的单元格重叠。

Once a box has been laid out according to the normal flow or floated, it may be shifted relative to this position. This is called relative positioning. Offsetting a box (B1) in this way has no effect on the box (B2) that follows: B2 is given a position as if B1 were not offset and B2 is not re-positioned after B1's offset is applied. This implies that relative positioning may cause boxes to overlap.

相反,我会在表格中添加一些边距:

width: calc(100% - 40px);
margin: 0 20px;

.post-main-area {
  display: table;
  width: calc(100% - 40px);
  margin: 0 20px;
}
.post-main-area .previous-slide-arrow,
.post-main-area .next-slide-arrow {
  border: 5px solid green;
  width: 5%;
  display: table-cell;
  vertical-align: middle;
}
.post-slide {
  border: 5px solid wheat;
}
<div class="post-main-area">
  <a class="previous-slide-arrow" href="#">&lt;</a>
  <div class="post-slide">.</div>
  <a class="next-slide-arrow" href="#">&gt;</a>
</div>

关于css - 为什么这个表格单元格与相邻的表格单元格重叠?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33331277/

相关文章:

css - 我无法使用@font-face

css - 防止宽度变化应用位置 :fixed

css - 如何将固定模式的关闭按钮放在固定位置?

css - 当父级为 `absolute` 时,`relative` 子级与 `table-cell` 父级不相关 - 仅限 Firefox

javascript - 文件上传/预览,无法更改图像尺寸

html - Div 在缩小时向下移动

css - 100vh 不会在屏幕尺寸小于 326px 时覆盖整个屏幕

html - 使表格行的背景超出表格的边界

html - 使用 <div> 生成 "table"

javascript - 嵌套的 div 不会显示两种背景颜色