【问题标题】:Why does my CSS column-span element not respect margin-bottom of blocks in the columns above?为什么我的 CSS column-span 元素不尊重上面列中块的边距底部?
【发布时间】:2021-04-04 18:58:11
【问题描述】:

我有一个带有段落的多列 div,我需要任何段落簇中的最后一个段落以底部的空格结尾。目前,我在p 上使用margin-bottom 来实现这一点,然后在p+p 上使用相同的负数margin-top。这一切都很好。然后,我在这些段落下方添加了一个跨列 div。出于某种原因,扳手似乎忽略了第一列中段落的margin-bottom,这意味着如果列不平衡,我的 div 会忽略间距(实际上是在 如果您在 Chrome 检查器中查看它的边距),则与上面的段落相近。是否有一些干净的解决方案来获得一致的间距?您可以在此处的 sn-p 中看到这种情况:

.container {
  column-count: 2;
  border: solid black 1px;
  width: 200px;
}

.spanner {
 background-color: #aaf;
 column-span : all;
}

p {
 margin-top   : 0px;
 margin-bottom: 20px;
 padding      : 5px;
 background-color : #ffa;
}

p+p {
 margin-top: -20px;
}
<b>Balanced columns are fine:<b>

<div class="container">
  <p>1 1 1 1 1 1 1 1 1 1 1</p>
  <p>2 2 2 2 2 2 2 2 2 2 2</p>
  <p>3 3 3 3 3 3 3 3 3 3 3</p>
  <p>4 4 4 4 4 4 4 4 4 4 4</p>
  <p>5 5 5 5 5 5 5 5 5 5 5</p>
  <p>6 6 6 6 6 6 6 6 6 6 6</p>

  <div class="spanner"> span the whole column, bro. </div>
</div>
<br>
<br>

<b>Unbalanced columns ruin my life:<b>

<div class="container">
  <p>1 1 1 1 1 1 1 1 1 1 1</p>
  <p>2 2 2 2 2 2 2 2 2 2 2</p>
  <p>3 3 3 3 3 3 3 3 3 3 3</p>
  <p>4 4 4 4 4 4 4 4 4 4 4</p>
  <p>5 5 5 5 5 5 5 5 5 5 5</p>

  <div class="spanner"> span the whole column, bro. </div>
</div>

编辑:添加了额外的上下文,因为建议的答案并不能完全解决我的问题。

【问题讨论】:

  • 请结帐stackoverflow.com/questions/38020462/… 我认为您唯一的解决方案是在容器底部添加边距。并且不要忘记将微调器从容器中取出。
  • 感谢您的回复!但是,链接的帖子似乎是一个明显不同的问题,并且该页面上的修复在这种情况下不起作用。不幸的是,插入容器对象也不是一种选择,因为该内容是从实时用户输入动态生成的,而且我认为开发单独的 JS 逻辑以编程方式在用户键入的所有内容周围注入容器对象不会非常干净(不要提到它会用他们可能不期望的 div 污染用户输入)。 ://

标签: html css css-multicolumn-layout


【解决方案1】:

这是 chrome 问题。它应该在Firefox中工作。试试下面的CSS for chrome:

.container {
  column-count: 2;
  border: solid black 1px;
}

.spanner {
 background-color: #aaf;
 column-span : all;
}

p {
 margin-top   : 0px;
 margin-bottom: 10px;
 padding      : 5px;
 background-color : #ffa;
 display: inline-block;
 width: 100%;
}

您可以使用 spanner 类将 margin-top 添加到 div 以实现您的要求。

.container {
  column-count: 2; 
  border: solid black 1px;
  width: 200px;
}

.spanner {
 background-color: #aaf;
 column-span : all;
 margin-top: 20px;
} 

p {
 margin-top   : 0px;
 margin-bottom: 0px;
 padding      : 5px;
background-color : #ffa;
}

【讨论】:

  • 你好!请看我编辑的帖子。 inline-block 解决了我写的问题,但我意识到我有一些进一步的上下文导致它在我的实际项目中不起作用。您是否有兴趣通过添加的详细信息再次查看它?
猜你喜欢
  • 2018-11-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多