Автоматически разбивает длинные слова внутри контейнера DIV, но предпочитает разрыв строки в пробелах - PullRequest
0 голосов
/ 10 октября 2018

У меня есть какой-то меньший боковой контейнер, #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;
}

Fiddle: https://jsfiddle.net/qp74uxkt/11/

Мое желание / ожидание состояло в том, что текст будет разрываться после слов "Я очень длинный текст ", затем на следующей строке продолжите с" andIevenContain ... ", и это длинное слово может быть разбито в конце доступного пространства, основываясь на ограничениях родительского контейнера.Это также не работает, когда я использую "дефисы: авто;".Можно ли это сделать?Example

Ответы [ 2 ]

0 голосов
/ 10 октября 2018

Вы можете установить свойство разбиения по словам как слово-разрыв.Я обновил ваш код и создал новую скрипку.Я думаю, что это решит вашу проблему Check it out https://jsfiddle.net/yvLb6zer/

0 голосов
/ 10 октября 2018

Если количество длинных слов не слишком велико, я бы рекомендовал , а не , чтобы использовать любую настройку 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>
...