为什么Chrome会在我的CSS3多栏布局中截断文本?

mwg9r5ms  于 2022-12-01  发布在  CSS3
关注(0)|答案(7)|浏览(221)

我正在使用CSS多栏布局来显示文本。布局在Firefox中显示正确。但是Chrome有一个错误,它会 * 剪切/剪切掉文本字符的顶部和底部 *。为什么会发生这种情况?我如何才能使它在Chrome中工作?
以下是问题的屏幕截图:

第一个
最后,这里是一个网页,我试图让它工作:http://www.vcn.bc.ca/~dugan/css3/newhtml.html

xkftehaa

xkftehaa1#

调整行高(或字体大小,如其他地方推荐的)可能会消除Chrome的裁剪缺陷,但只是偶然的。如果你想通过编程来避免它,目前唯一有效的解决方案是:

.multicolumn p {
  display: inline-block;
}

您可以将其扩展到多列容器的所有子元素,但可能需要在某些时候添加width: 100%;。有关更多信息,请阅读http://www.symphonious.net/2010/12/30/controlling-wrapping-in-css3-columns/http://zomigi.com/blog/deal-breaker-problems-with-css3-multi-columns/上的讨论。
此外,如果内联块解决方案没有帮助,截断文本位的原因可能是多列设计的递归应用。我在比上面更复杂的场景中观察到了这一点,其中多列文本容器的远程父容器有自己的列布局。从顶级容器中删除列计数修复了列中断问题。

yfjy0ee7

yfjy0ee72#

body{ 
    -webkit-column-break-inside:avoid;
}
7vux5j2d

7vux5j2d3#

MDN有解决这个问题的例子。

.column-item {
  break-inside: avoid;
  page-break-inside: avoid;
}
vm0i2vca

vm0i2vca4#

如果你在dugan.css中的p规则上设置了1.5的行高,似乎会显示所有的文本。Chrome平衡列的方式似乎仍然存在缺陷,你可能需要在最后一段放一个空段落或添加一些填充或其他东西。

pxq42qpu

pxq42qpu5#

在某些情况下,我发现分栏内容中的填充和边距会导致此问题。请尝试:

.columnized-content { margin: 0; padding: 0; }
huwehgph

huwehgph6#

我想它更像是chrome中的一个bug。在我的例子中,清除:两个都被设置到框中。取消设置并给出box-sizing:border-box;帮我解决了。

drkbr07n

drkbr07n7#

在要切断的元素上设置break-inside: avoid
这不仅适用于文本,也适用于div等。

相关问题