【问题标题】:Why does word-break work for tables but not word wrap?为什么分词适用于表格而不适用于自动换行?
【发布时间】:2017-05-31 12:01:27
【问题描述】:

考虑以下示例:

.table {
   width: 50px;
   display: table;
  padding: 10px;
  border: 1px solid red;
}  

.table a {
  word-wrap: break-word; 
}

.table2 a {
  word-break: break-all; 
}  
<div class="table">
  <a href="#">doNotClickMedoNotClickMedoNotClickMedoNotClickMe</a>  
</div>  

<div class="table table2">
  <a href="#">doNotClickMedoNotClickMedoNotClickMedoNotClickMe</a>  
</div>  

正如您在第一个表中看到的那样,word-wrap 无法将文本换行。但在第二张表中word-break 可能会破坏文本。据我从关于word-wrapword-break 的mdn 文章中了解到,它们之间的唯一区别是word-break 甚至会导致中文和日文文本中断,而word-wrap 不适用于这些语言。现在为什么word-break 可以打破表格中的单词但word-wrap 不能? html css 规范是否提到了这种行为?

阅读了一些其他类似的帖子,如thisthisthis,我发现另一件不寻常的事情是为什么在表格中添加table-layout: fixed 允许word-wrap 断词?

【问题讨论】:

  • 似乎word-break 的行为在 Firefox 中有所不同。我在使用 chrome 时发布了这个问题。

标签: html css html-table


【解决方案1】:

table-layout: fixed之所以在这里工作是因为

table-layout: fixed :- 水平布局只取决于表格的宽度和列的宽度,而不是单元格的内容。(如果没有设置word-wrap:break-word,可能会导致单元格溢出)

对于

table-layout: auto :- 列宽由单元格中最宽的不可破坏内容设置,与列宽无关。

所以 word-wrap:break-word 现在是 overflow-wrap:break-word(在 CSS3 中)不允许内容通过破坏 table-layout: fixed 的内容而溢出。

上面的解释对你的问题是部分的,但我希望它会对你有所帮助。

【讨论】:

  • 感谢您的帮助。但对我来说,解释是相当矛盾的...... (可能导致单元格溢出) 似乎暗示文本会溢出而不是换行。
  • 谢谢你,这行(导致单元格溢出)表示如果你设置word-wrap:break-word,那么文本将被换行,否则@987654329会发生溢出@.
猜你喜欢
  • 1970-01-01
  • 2013-06-23
  • 1970-01-01
  • 2019-01-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-08
相关资源
最近更新 更多