CSS3列 - 强制非破坏/分裂元素?

Pro*_*cop 57 css css3

我正在使用一些CSS3列(column-count: 2;column-gap: 20px;)将一些内容拆分为两列.在我的内容中,我有一个<p>,然后是a <blockquote>,然后是另一个<p>.

我的问题:有没有办法阻止我<blockquote>(或任何其他指定的元素)分成两列?

例如,目前我<blockquote>的部分位于第1列,部分位于第2列.

Blockquote拆分为多个列

理想情况下,我想让它<blockquote>在第1列或第2列中保持在一起.

Blockquote保持在列中

知道这是否可以实现?

谢谢!

boo*_*sey 107

添加display:inline-block;到要防止拆分的项目.

  • 如果您的列由长列表元素组成,也不起作用 (3认同)
  • 此外,您需要删除元素上的任何浮点数,或者甚至使用`display:inline-block`拆分它 (2认同)

met*_*ion 44

从理论上讲,您正在寻找的属性是......

blockquote {
  column-break-inside : avoid;
}
Run Code Online (Sandbox Code Playgroud)

但是,上次我检查它在Webkit中没有正确实现,不知道firefox.我有更多运气:

blockquote {
  display: inline-block;
}
Run Code Online (Sandbox Code Playgroud)

由于渲染器将其视为图像,并且不会在列之间将其分解.

  • 在webkit中使用-webkit-前缀. (5认同)
  • 仍然没有在Firefox中. (2认同)
  • 现在只需使用“break-inside:void;” (2认同)

Tza*_*ach 10

根据MDN,正确的解决方案是

blockquote {
  break-inside: avoid-column;
}
Run Code Online (Sandbox Code Playgroud)

然而,这尚未在所有浏览器中实现,因此实用的解决方案是:

blockquote {
  display: inline-block;
}
Run Code Online (Sandbox Code Playgroud)


Ric*_*Zea 6

对于那些进入这个论坛并需要Firefox解决方案的其他人来说,只是一般的FYI.

在写这篇文章时,Firefox 22.0 column-break-inside即使使用-moz-前缀也不支持属性.

但解决方案很简单:只需使用display:table;.您也可以这样做**display:inline-block;这些解决方案的问题是列表项将丢失其列表样式项或项目符号图标.

**此外,我遇到的一个问题display:inline-block;是,如果两个连续列表项中的文本非常短,则底部项目将自行换行并与其上方的文本内联.

display:table; 是两种解决方案中最差的.

更多信息:http://trentwalton.com/2012/02/13/css-column-breaks/