【问题标题】:Text Wrapping Issue in CSS GridCSS 网格中的文本换行问题
【发布时间】:2017-12-07 21:28:23
【问题描述】:

我遇到了一个问题,即当 CSS 网格中的某些文本具有一定数量的字符时,它会添加一条虚线。这是我第一次使用 CSS 网格,我怀疑它与网格有关。我在 Chrome 和 Safari 中看到了这个问题(使用 Mac OS X),但在 Firefox 中没有。

.grid {
  display: grid;
  border: 1px solid black;
}

.grid > .row {
  display: grid;
  grid-template-columns: repeat(12, 1fr);
}

.col-10 {
  grid-column-end: span 10;
}

.blue {
  background-color: blue;
}
<div class="grid">
  <div class="row">
    <div class="blue col-10">
      You must create an account first! See site admin for help.
    </div>
  </div>
</div>
<div class="grid">
  <div class="row">
    <div class="blue col-10">
      You must create an account first! See site admin for help..
    </div>
  </div>
</div>

基本上,一条幽灵线被添加到You must create an account first! See site admin for help,导致&lt;div class="col-10 col-offset-1"&gt; 与它有两条线而不是一条线一样高。文本离行尾不远,调整窗口大小没有区别(直到它足够窄以实际导致换行)。如果我在短语中添加两个额外的字符,幽灵线就会消失。如果我继续添加字符,鬼线会在某些点重新出现,然后随着下一个字符再次消失。一旦我添加了足够的文本以分成两行,问题似乎不再出现,所以它似乎只发生在单行文本上。

即使文本离行尾还很远,但它似乎是一个换行问题,当我添加white-space: nowrap; 时它确实消失了。

知道是什么原因造成的吗?是 Chrome 和 Safari 的错误,还是我的 HTML 和 CSS 有问题?


编辑

感谢建议的编辑,添加了代码 sn-p 来说明问题。我能够在保持问题的同时消除外部网格,因此我更新了代码以将其删除。您现在看到的是两个相同的 div,除了一个在末尾有一个额外的句点。在我的浏览器 (Chrome) 中,我的第二个 div 更短,即使它有一个额外的字符。


编辑 2

当我在 Safari 中使用代码 sn-p 时,我实际上遇到了不同版本的问题。正如我所说,在 Chrome 中,它似乎是基于字符总数的。我可以添加一个角色,幽灵线消失,然后我删除角色,这条线又出现了。但在 Safari 中,我发现实际上只要文本中有多个空格字符,就会出现鬼线,无论文本有多短或多长。

再一次,Firefox 完全没有问题。它完全按照我的预期显示文本。

【问题讨论】:

  • 那么你在网格内部创建一个网格......这是故意的吗?
  • 是的。这是气馁吗?
  • 我不确定我会说这是鼓励还是不鼓励,因为这取决于您想要的布局。然而,这肯定是相当不寻常的。不要忘记你的内部gridpadded 类,它增加了额外的“高度”。当您认为元素太高时,这可能就是您所看到的。
  • 绝对不是填充。我可以在浏览器中编辑文本并在添加几个字符后查看高度下降。然后我可以删除一个字符,高度再次增加。我还可以检查元素并查看容器填充和文本高度之间的差异。有一些幽灵空间没有考虑到。
  • 过去 20 天内我第二次看到这个问题出现。它似乎是 Chrome / Safari 中的一个错误。这是另一种情况:stackoverflow.com/q/47399313/3597276

标签: css css-grid


【解决方案1】:

空格确实被解释为它将在行前后创建一个空格;因此,请使用 CSS white-space: nowrap;

<div class="full-screen grid">
  <div class="row">
    <div class="align-center padded full-width text-center grid">
      <div class="row">
        <div class="col-10 col-offset-1" style="white-space: nowrap;">
          You must create an account first! See site admin for help.
        </div>
      </div>
    </div>
  </div>
</div>

您还可以删除 > 和

<div class="full-screen grid">
  <div class="row">
    <div class="align-center padded full-width text-center grid">
      <div class="row">
        <div class="col-10 col-offset-1">You must create an account first! See site admin for help.</div>
      </div>
    </div>
  </div>
</div>

此外,为了确保没有换行符,请将空格字符替换为 &amp;nbsp;

<div class="full-screen grid">
  <div class="row">
    <div class="align-center padded full-width text-center grid">
      <div class="row">
        <div class="col-10 col-offset-1">You&nbsp;must&nbsp;create&nbsp;an&nbsp;account&nbsp;first!&nbsp;See&nbsp;site&nbsp;admin&nbsp;for&nbsp;help.</div>
      </div>
    </div>
  </div>
</div>

【讨论】:

  • 我希望文本在应该换行时换行。
  • 你可以删除 div 标签的 > 和 <div class="col-10 col-offset-1">You must create an account first! See site admin for help.</div>
  • 我很困惑...你是在给我看之前和之后的空间吗?编辑:抱歉,没有看到您的编辑。
  • 我不认为这有什么不同,但让我仔细检查一下。
  • (可选)您还可以将行中的每个空格字符替换为   &lt;div class="col-10 col-offset-1"&gt;You&amp;nbsp;must&amp;nbsp;create&amp;nbsp;an&amp;nbsp;account&amp;nbsp;first!&amp;nbsp;See&amp;nbsp;site&amp;nbsp;admin&amp;nbsp;for&amp;nbsp;help.&lt;/div&gt;
猜你喜欢
  • 2018-06-10
  • 1970-01-01
  • 2022-01-16
  • 2013-10-03
  • 1970-01-01
  • 1970-01-01
  • 2015-06-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多