【问题标题】:css-grid and `fr` unit does not work with `overflow-wrap: break-word`css-grid 和 `fr` 单元不适用于 `overflow-wrap: break-word`
【发布时间】:2019-05-05 04:31:16
【问题描述】:

我有一个grid 容器,其宽度固定,单行单列包含一个单词。当我使用fr 单位来调整列的大小时,overflow-wrap: break-word 不会换行导致列中的单词溢出。

据我的理解和docs,如果没有可接受的断点,overflow-wrap: break-word 应该在任何时候中断以防止溢出。

似乎有两件事可以解决这个问题。一种是为列大小设置一个px 单位。其次是在文本容器上有overflow: hidden。我在 Chrome(v73) 和 Firefox(v66) 上观察到了相同的行为。

有人知道这种行为背后的原因吗?

https://jsfiddle.net/vdx90qeg/2/

<div class="container">
  <div class="item1">
    someverylongword
  </div>
</div>
.container {
  display: grid;
  grid-template-columns: 1fr;
  /*using 'px' instead of 'fr' works */
  grid-template-areas: "item1";
  width: 80px;
  border: 1px solid black;
}

.item1 {
  grid-area: "item1";
  overflow-wrap: break-word;
  /* overflow: hidden; */
  /* works when uncommented */
}

【问题讨论】:

  • 添加 min-width: 0overflow 属性而不是 visible 可解决此问题(grid item 的默认 min-widthmin-height自动)...见stackoverflow.com/questions/55773596
  • 是的,它也可以修复它,将minmax(0, 1fr) 设置为列也是如此。但我仍然不明白为什么overflow-wrap 没有被考虑在内。

标签: css overflow css-grid word-wrap


【解决方案1】:

看起来这个问题和https://css-tricks.com/preventing-a-grid-blowout/解决的问题很相似

将列设置为minmax(0, 1fr) 而不仅仅是1fr。这种方法为列提供了默认为auto 的最小宽度。目标是将列从无限大小的容器变成确定大小的容器。

codepen 链接:https://codepen.io/thissushiguy/pen/mYdxjb

【讨论】:

    猜你喜欢
    • 2023-03-05
    • 1970-01-01
    • 2016-05-17
    • 2018-09-04
    • 1970-01-01
    • 1970-01-01
    • 2012-05-31
    • 1970-01-01
    • 2022-01-15
    相关资源
    最近更新 更多