CSS:中间使用 flexbox 省略号,在 safari 中中断

Posted

技术标签:

【中文标题】CSS:中间使用 flexbox 省略号,在 safari 中中断【英文标题】:CSS: ellipsis in middle using flexbox, breaks in safari 【发布时间】:2016-10-18 15:34:05 【问题描述】:

我正在尝试使用 flexbox 而不是浮动在两段内容之间创建省略号。我需要的效果可能永远不会与花车一起使用。

第一个“列”包含的信息不如第二列重要,因此应该先截断第二列中的任何内容。

此效果在 Chrome 和 FireFox 中运行良好,但在 Safari 中失败。

根据caniuse,我使用的是正确版本的 Safari,这表明完全支持 flexbox。

对于实时版本和我想要实现的精简版本:

.parent 
  background-color: lightgrey;
  padding: 10px 0;
  display: flex;
  max-width: 410px;
  margin-bottom: 2px;

.less-important 
  background-color: lightpink;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  padding: 0 5px;

.more-important 
  background-color: lightgreen;
  white-space: nowrap;
  padding: 0 5px;
<div class="parent">
  <div class="less-important">Truncate this text because it is less important</div>
  <div class="more-important">The important text</div>
</div>

<div class="parent">
  <div class="less-important">No ellipsis</div>
  <div class="more-important">Important stuff</div>
</div>

<div class="parent">
  <div class="less-important">Less important content</div>
  <div class="more-important">Way more important info that will cause ellipsis</div>
</div>

这是 Safari 中发生的情况的屏幕截图:

我怎样才能让它在 Safari 中正常工作?

【问题讨论】:

【参考方案1】:

我通过为.less-important.more-important 指定flex: 属性使其工作:

.parent 
  background-color: lightgrey;
  padding: 10px 0;
  display: flex;
  max-width: 410px;
  margin-bottom: 2px;

.less-important 
  background-color: lightpink;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  padding: 0 5px;
  flex: 0 1 auto;

.more-important 
  background-color: lightgreen;
  white-space: nowrap;
  padding: 0 5px;
  flex: 0 0 auto;
<div class="parent">
  <div class="less-important">Truncate this text because it is less important</div>
  <div class="more-important">The important text</div>
</div>

<div class="parent">
  <div class="less-important">No ellipsis</div>
  <div class="more-important">Important stuff</div>
</div>

<div class="parent">
  <div class="less-important">Less important content</div>
  <div class="more-important">Way more important info that will cause ellipsis</div>
</div>

【讨论】:

为此我整天都在把脸砸在桌子上......我想知道是否只需要明确告知 Safari。无论哪种方式,这都很棒。谢谢。 Flexbox 可能真的很挑剔——尤其是“默认行为”——从浏览器到浏览器。如果您还没有,我强烈建议您收藏github.com/philipwalton/flexbugs 感谢您的资源!很有帮助。 太棒了,fwiw,添加text-direction: ltr 可以看到.more-important 的结尾而不是开头。

以上是关于CSS:中间使用 flexbox 省略号,在 safari 中中断的主要内容,如果未能解决你的问题,请参考以下文章

带有多行文本省略号的 Flexbox

CSS flexBox不会定位到底部[重复]

flexbox容器中的省略号[重复]

CSS:flexbox的第一个孩子向左并休息到中心[重复]

应用flexbox布局的页面在手机版chrome浏览器出现文字省略号显示异常的情况

css或者jquery怎么实现超出指定行数就在后面出现省略号