【发布时间】:2020-10-31 23:50:19
【问题描述】:
我有一个由用户在文本编辑器中提供的 markdown 实时生成的多列 div(2-4 列,具体取决于我的应用程序中的设置)。在某些情况下,他们希望手动插入分栏符。为了实现这一点,我提供了一个 Markdown sn-p,它生成一个带有 CSS 属性 break-after: column 的 div 来手动触发分栏符。如果设置为display: block,它工作正常。但是,如果用户随后插入一个跨越两列的 div(使用 CSS column-span: all),则该跨列元素将被分流到其包含元素的 下方,并且任何进一步的文本都会完全消失,如下所示(特别是在最新版本的 Chrome 中):
.container {
column-count: 2;
height: 60mm;
border: solid black 1px;
}
.container .colbreak {
color: red;
break-after: column;
}
.container .wide {
color: blue;
column-span: all;
}
<div class="container">
<p>left left left</p>
<p>left left left</p>
<div class="colbreak">Column Break</div>
<p>right right right</p>
<p>right right right</p>
<p>right right right</p>
<p>right right right</p>
<p>right right right</p>
<div class="wide">
span all span all span all
span all span all span all
span all span
</div>
<p>more columns after</p>
<p>more columns after</p>
<p>more columns after</p>
<p>more columns after</p>
</div>
这就是它的样子(注意缺少“后面的更多列”段落):
将colbreak 更改为display: inline-block 或其他方式似乎完全忽略了break-after: column(也许这是真正的 问题:为什么break-after 被我忽略了inline-block 元素?:
如下所示,我完全不包含 colbreak div 会得到相同的行为:
谁能解释如何实现所需的行为?由于这是在用户输入时实时呈现的,因此我希望通过不需要为每列单独的 div 来保持列的自动平衡。计算文本长度和高度并在键入时在列之间动态移动它们似乎比它的价值更麻烦。如果用户更改为设置,这也会停止工作
【问题讨论】:
标签: html css css-multicolumn-layout