0

我有一个较小的侧容器,#sideNavContainer在父 div 中,另一侧(右侧)是内容的另一个 div。

当我将文本放入#sideNavContainer包含很长没有空格的单词时,这些单词开始脱离容器并覆盖右侧(内容区域)的内容。

我试图强制 的内容#sideNavContainer分解这些单词,以便它们在下一行继续,当它们到达容器的右端但我不是 100% 满意,因为我期望单词/句子也应该是最好在空间上打破。长词应该从下一行开始,然后被分解,而不是与其他文本在同一行开始(在空格之后),然后继续(但被分解)。

这是一些示例,希望能说明我的意思:

<div>
  <div id="sideNavBox">
    <span>Navigation and other Stuff</span>
    <div id="subContainer">
      I am a very long Text andIevenContainVeryLongWordsWithout spaces but my parent container(s) should not ChangeTheirWidthBecauseOfThis and break whenThereAreSpaces but longWordsWithoutSpaces shouldBeBrokenDown.
    </div>
  </div>
  <div id="contentBox">
    Hello, I am the main content
  </div>
</div>

CSS:

body {
  background-color: green;
}

#sideNavBox {
  float: left;
  margin-left: 20px;
  width: 180px;
  background-color: blue;
}
#subContainer {
  background-color: grey;
  word-break: break-all;
}
#contentBox {
  background-color: yellow;
}

小提琴:https ://jsfiddle.net/qp74uxkt/11/

我的愿望/期望是文本会在“我是一个很长的文本”之后中断,然后在下一行继续“andIevenContain ...”,然后这个长词可以在可用空间的末尾被打破,基于父容器的限制。当我使用“连字符:auto;”时,这也不起作用。这甚至可以做到吗? 例子

4

2 回答 2

1

您可以将分词属性设置为断词。我已经更新了你的代码并创建了一个新的小提琴。我认为它会解决你的问题 Check it out https://jsfiddle.net/yvLb6zer/

于 2018-10-10T16:18:19.783 回答
0

如果长词的数量不是太大,我建议不要 使用任何word-break设置,而是在这些长词中插入“软连字符”,在语法正确的位置。

软连字符是一个看起来像这样的实体:&shy;. 因此,如果您有,例如whateverwonderfullongword,您可以将其更改为what&shy;ever&shy;wonder&shy;ful&shy;long&shy;word. 如果它适合宽度,则将其作为一个整体写入,如果不适合,则它将在&shy;实体的最新可能位置中断(带有连字符),如下例所示。

<p>what&shy;ever&shy;wonder&shy;ful&shy;long&shy;word what&shy;ever&shy;wonder&shy;ful&shy;long&shy;word what&shy;ever&shy;wonder&shy;ful&shy;long&shy;word what&shy;ever&shy;wonder&shy;ful&shy;long&shy;word what&shy;ever&shy;wonder&shy;ful&shy;long&shy;word what&shy;ever&shy;wonder&shy;ful&shy;long&shy;word what&shy;ever&shy;wonder&shy;ful&shy;long&shy;word what&shy;ever&shy;wonder&shy;ful&shy;long&shy;word</p>

于 2018-10-10T15:41:50.007 回答