【问题标题】:Chromium column layout and overflow hidden hides textChromium 列布局和溢出隐藏隐藏文本
【发布时间】:2020-07-28 17:52:43
【问题描述】:

我在使用列布局以及隐藏在 Chromium 中的溢出时遇到问题。除第一个之外的所有列中的第一个条目都缺少其文本。以下代码 sn -p 是一个最小化的示例。实际上,我会在出现相同问题的地方使用ulli。使用列布局,因为不知道会有多少元素或整体可用的宽度有多少。

.list {
  width: 14em;
  column-width: 4em;
}

.elem {
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
<div class="list">
  <div class="elem">First entry</div>
  <div class="elem">Second entry</div>
  <div class="elem">Third entry</div>
  <div class="elem">Fourth entry</div>
  <div class="elem">Fifth entry</div>
  <div class="elem">Sixth entry</div>
</div>

此问题的“解决方案”似乎是将transform: translateZ(0); 添加到列表元素中,如下所示:

.list {
  width: 14em;
  column-width: 4em;
}

.elem {
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  transform: translateZ(0);
}
<div class="list">
  <div class="elem">First entry</div>
  <div class="elem">Second entry</div>
  <div class="elem">Third entry</div>
  <div class="elem">Fourth entry</div>
  <div class="elem">Fifth entry</div>
  <div class="elem">Sixth entry</div>
</div>

但我不相信这应该是最终的解决方案。这只是一个让它以某种方式工作的“hack”。

这个问题出现在 google chrome 和新的 microsoft edge 浏览器(它们都使用 chromium 引擎)中

所以我的问题是:这里真正的问题是什么,我该如何正确地做到这一点?

【问题讨论】:

  • 在当前的 Chrome(64 位 Win 10 上的 84.0.4147.105)中,您的两个示例对我来说绝对相同
  • 我之前有版本 84.0.4147.89 64bit Win 10。它刚刚更新到 84.0.4147.105,我仍然看到差异。这就是我所看到的:prntscr.com/tpvjet
  • 我用铬测试并重现了这个问题。它在 Edge Legacy 和 IE 中运行良好。我认为这应该是 Chrome 和 Edge Chromium 的问题。您可以在 Chrome 中报告问题 (Alt+Shift+I) 或在 Edge Chromium 中发送反馈 (Alt+Shift+I)。目前,您可以使用您的解决方案或 Baro 的解决方案作为解决方法。

标签: html css google-chrome microsoft-edge chromium


【解决方案1】:

backface-visibility: hidden; 也执行相同的技巧。可能是因为 GPU 渲染是强制的。这可能是一个错误。

.list {
  width: 14em;
  column-width: 4em;
}

.elem {

  backface-visibility: hidden;

  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
<div class="list">
  <div class="elem">First entry</div>
  <div class="elem">Second entry</div>
  <div class="elem">Third entry</div>
  
  <div class="elem">Fourth entry</div>
  <div class="elem">Fifth entry</div>
  <div class="elem">Sixth entry</div>
</div>

通过进行一些测试,我找到了一种不强制在 GPU 上进行渲染的替代方案。 使用:border: solid 0.1px transparent; 我个人更喜欢它。

很遗憾,我不能告诉你这个错误的原因,我什至不知道它是否可以被视为一个答案,但更多的是一个建议。

.list {
  width: 14em;
  column-width: 4em;
}

.elem {

  border: solid 0.1px transparent;

  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
<div class="list">
  <div class="elem">First entry</div>
  <div class="elem">Second entry</div>
  <div class="elem">Third entry</div>
  
  <div class="elem">Fourth entry</div>
  <div class="elem">Fifth entry</div>
  <div class="elem">Sixth entry</div>
</div>

【讨论】:

  • 很高兴有一个替代方案:)
猜你喜欢
  • 2011-09-01
  • 1970-01-01
  • 2016-03-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多