I have two inline span. code sample:
<div class="comment_content">
<span class="comment_author"><?= $child_comment['comment_author'] ?></span>
<span class="comment_text"><?= $child_comment['comment_content'] ?></span>
</div>
And scss sample:
.comment_content {
word-wrap: break-word;
}
.comment_author {
display: inline-block;
vertical-align:top;
}
.comment_text {
display: inline-block;
word-wrap: break-word;
width: 100%;
}
If my expected view has to be:
If user enters string without spaces, string won’t break. And breaks design:
How properly break long words ??
Sunil Gehlot
1,5492 gold badges18 silver badges32 bronze badges
asked Apr 5, 2016 at 6:06
Ramūnas PabrėžaRamūnas Pabrėža
5641 gold badge5 silver badges14 bronze badges
1
white-space: nowrap
will prevent word-break
from taking effect. Some templates apply white-space: nowrap
which necessitates overriding this attribute with white-space: normal
.
answered Mar 19, 2019 at 9:08
1
To properly break long-words it requires to combine several CSS properties, I would suggest defining and applying helper class like this:
.break-long-words {
overflow-wrap: break-word;
word-wrap: break-word;
word-break: break-all;
word-break: break-word;
hyphens: auto;
}
Properties explained:
- overflow-wrap and word-wrap are aliases for same thing but some browsers support one and not the other so we need them both. They
are offical «correct» way to break words but they don’t have any effect on elements with dynamic width so we need more… - word-break is originally intended for requiring a particular behaviour with CJK (Chinese, Japanese, and Korean) text but works similar to
word-wrap but in WebKit break-all value breaks everything and everywhere. For that reason we must use non-standard and poorly
documented WebKit-only break-word value. - and optionally, if it makes sense for break words to have hypens (ie. for URLs it probably doesn’t) we can use hypens in browsers that
support them (at the moment Firefox, Safari, Edge and IE 10+). Also note that in Firefox hypens don’t work if you have word-brake
property so unless you have fixed-width container you must choose between hypens on FF or legacy support.
Note that I omitted vendor prefixes but if you don’t use something like Autoprefixer than this is full verison:
.break-long-words {
overflow-wrap: break-word;
word-wrap: break-word;
-ms-word-break: break-all;
word-break: break-all;
word-break: break-word;
-ms-hyphens: auto;
-moz-hyphens: auto;
-webkit-hyphens: auto;
hyphens: auto;
}
answered Apr 11, 2016 at 17:45
Teo DragovicTeo Dragovic
3,41821 silver badges34 bronze badges
4
Use the word-break
style to define where in the word to break to the next line. By default, it uses spaces or hyphens but you can set it to break-all
to allow breaking on any letter:
.comment_text {
display: inline-block;
word-wrap: break-word;
word-break: break-all;
width: 100%;
}
answered Apr 5, 2016 at 6:11
SteveSteve
9,28510 gold badges49 silver badges80 bronze badges
3
I thing it will be helpful. You have to specify width
, particular in your case.
.comment_content{
width:500px;
border:1px solid #ccc;
}
.comment_author{
width: 100px;
float: left;
}
.comment_text{
width: 400px;
word-wrap: break-word;
display:inline-block;
}
<div class="comment_content">
<span class="comment_author">Hello</span>
<span class="comment_text">qeqweqweqweqeeqeqweqweqweqweqweqweqweqweqweqweqweqweqweqweqweqweqweqweqweqweqweqweqweqweqweqweqweqweqweqweqeqweqweqweqweqweqweqwewqeqweqweqweqweqweqweqweqweqweqeqeqweqweqweqweqweqweqweqweqweqeqewqweqeq</span>
</div>
Here is a working examples to achieve what you want: examples
answered Jun 19, 2017 at 20:47
MirodilMirodil
2,2692 gold badges29 silver badges38 bronze badges
You can use
word-break: break-all;
See fiddle here
fiddle
answered Apr 5, 2016 at 6:13
pradeep1991singhpradeep1991singh
8,0254 gold badges21 silver badges31 bronze badges
1
Please use word-break: break-all;
in .comment_content
class.
answered Apr 5, 2016 at 6:14
Sunil GehlotSunil Gehlot
1,5492 gold badges18 silver badges32 bronze badges
I have a small css script that force <a>
tag word-wrap in a div. It worked fine on FF, Chrome but didn’t work on IE9. How can I fix it?
.tab_title a{
word-wrap: break-word;
}
asked Dec 6, 2011 at 2:34
1
For a similar issue, I used display: inline-block
on the <a>
tag, which seems to help. And word-break: break-all
as I was concerned with long URLs not wrapping.
So, this in your case essentially…
.tab_title a {
display: inline-block;
word-break: break-all;
}
answered Jun 8, 2015 at 9:38
Si ClancySi Clancy
2913 silver badges2 bronze badges
For me it worked in both Chrome and IE with:
.word-hyphen-break {
word-break: break-word;
word-wrap: break-word;
width: 100%;
}
like this no need to configure specific width.
georgeawg
48.4k13 gold badges71 silver badges94 bronze badges
answered Aug 11, 2018 at 20:43
annieteanniete
1811 silver badge4 bronze badges
Try this:
.tab_title a{
-ms-word-break: break-all;
word-break: break-all;
word-break: break-word;
-webkit-hyphens: auto;
-moz-hyphens: auto;
hyphens: auto;
}
answered Jul 31, 2015 at 13:54
Danny ConnellDanny Connell
7821 gold badge8 silver badges17 bronze badges
1
I remove the anchor tag after .tab_title
class and it works
answered Dec 6, 2011 at 2:59
hungneoxhungneox
9,15311 gold badges49 silver badges65 bronze badges
1
word-wrap: word-break;
works only in ff and chrome and not in IE8 and IE9.
word-break: break-all;
does not work either.
Anri
6,1453 gold badges36 silver badges61 bronze badges
answered Mar 7, 2013 at 16:21
I have had good success in Chrome, Firefox and IE with using:
word-break: break-word;
word-wrap: break-word;
In my problem case I was using:
display: table-cell;
and I ended up having to include
max-width: 440px;
to get wrapping in all browsers. In most cases the max-width was not necessary. Using
word-break: break-all;
does not work well in IE because although long words without spaces will be wrapped, short words also stop wrapping at spaces.
answered Apr 28, 2017 at 18:34
2
I recently was fighting this in Angular between IE/Edge & Chrome. Here is what I found worked for me
overflow-wrap: break-word;
word-wrap: break-word;
This gave me the best of both. It would break the word that was too long, but unlike word-break it would not break mid-word.
answered Jun 1, 2017 at 14:40
Brian SBrian S
3,04636 silver badges55 bronze badges
i just figured out that word-wrap:break-word works only partially in IE8 and IE9. If I have a string of words with spaces, then that string gets wrapped. But if my string consists of one long word, it forces the parent/container element to expand according to its width
answered Mar 7, 2013 at 23:07
This issue started 5 years ago… and counting:
I’d like to share with the world that i’ve found a way to bypass this annoying bug,
I took the text from a textarea input :
var txt = modal_dialog_text_area_input.value;
then i replaced each whitespace with the following markup, in order to preserve whitespaces. Which html2canvas fails to do, and why we find ourselves at 3:00 AM in the morning here, instead of in bed:
paragraphElement.innerHTML = txt.replace(/s/g, '<span> </span>');
Now the paragraph looks good and the screenshot html2canvas takes is OK.
Another thing: the paragraph element must have the following css rules:
word-break: break-word;
white-space: normal;
Take care y’all
If you are attempting to wrap very long words or hyperlinks within a narrow container, you may experience text overflowing when viewing your results in IE11. This may happen despite using the CSS declaration word-wrap: break-word; in IE 11, but looks fine in other browsers. See below:
There are ways of handling long words and URLs using forced breaks, hyphenation, ellipsis, etc). See the terrific article here on the CSS Tricks website: https://css-tricks.com/snippets/css/prevent-long-urls-from-breaking-out-of-container/
What if you do not want a hyphen or ellipsis to appear? Using word-wrap: break-word; overflow-wrap: break-word; word-break: break-all; word-break: break-word; or even the Microsoft CSS Browser Prefix declaration -ms-word-break: break-all;, may not work. It didn’t for me.
The solution, using the HTML, ZERO-WIDTH-SPACE Unicode Character .
CSS
#container { width: 120px; background-color:#ccc; border: 1px solid #aaa; margin: 50px 50px 0; } .break { word-wrap: break-word; }
HTML
<div id="container"> <p>Donec sit amet erat porta, rhoncus dolor nec, <span class="break">scelerisqueaghtrafdssf</span> accumsan leo. Phasellus eu ipsum aliquam, <a class="break" href="www.samplewebsite.com/reallylongurl">www.reallylongwebsiteurl.com/reallylongurl</a> rutrum orci a, pulvinar elit. Aenean auctor dignissim tempus.</p> </div>
You have to insert the unicode character whereever you want the breaks to occur. See the final result below.
У меня есть два встроенных диапазона. образец кода:
<div class="comment_content">
<span class="comment_author"><?= $child_comment['comment_author'] ?></span>
<span class="comment_text"><?= $child_comment['comment_content'] ?></span>
</div>
И образец scss:
.comment_content {
word-wrap: break-word;
}
.comment_author {
display: inline-block;
vertical-align:top;
}
.comment_text {
display: inline-block;
word-wrap: break-word;
width: 100%;
}
Если мое ожидаемое представление должно быть:
Если пользователь вводит строку без пробелов, строка не прерывается. И разрывает дизайн:
Как правильно сломать длинные слова?
05 апр. 2016, в 08:17
Поделиться
Источник
5 ответов
Чтобы правильно сломать длинные слова, требуется объединить несколько свойств CSS, я бы предложил определить и применить вспомогательный класс следующим образом:
.break-long-words {
overflow-wrap: break-word;
word-wrap: break-word;
word-break: break-all;
word-break: break-word;
hyphens: auto;
}
Свойства объяснены:
- overflow-wrap и word-wrap являются псевдонимы за одно и то же, но некоторые браузеры поддерживают один, а не другой, поэтому мы нуждаемся в них обоих. Oни
являются официальным «правильным» способом разбить слова, но они не оказывают никакого влияния на элементы с динамической шириной, поэтому нам нужно больше… - word-break изначально предназначен для запроса определенного поведения с текстом CJK (китайский, японский и корейский), но работает аналогично
word-wrap, но в WebKit break-all значение разрывает все и везде. По этой причине мы должны использовать нестандартные и плохо
задокументированное значение слова «только для WebKit». - и, при желании, если имеет смысл разрывать слова, чтобы иметь hypens (т.е. для URL-адресов это, вероятно, нет), мы можем использовать hypens в браузерах, которые
(в настоящий момент Firefox, Safari, Edge и IE 10+). Также обратите внимание, что в Firefox hypens не работают, если у вас есть слово-тормоз
поэтому, если у вас нет контейнера с фиксированной шириной, вы должны выбрать между подписями FF или старой поддержкой.
Заметьте, что я опустил префиксы для поставщиков, но если вы не используете что-то вроде Autoprefixer, то это полная проверка:
.break-long-words {
overflow-wrap: break-word;
word-wrap: break-word;
-ms-word-break: break-all;
word-break: break-all;
word-break: break-word;
-ms-hyphens: auto;
-moz-hyphens: auto;
-webkit-hyphens: auto;
hyphens: auto;
}
Teo Dragovic
11 апр. 2016, в 18:26
Поделиться
Мне будет полезно. Вы должны указать width
, особенно в вашем случае.
.comment_content{
width:500px;
border:1px solid #ccc;
}
.comment_author{
width: 100px;
float: left;
}
.comment_text{
width: 400px;
word-wrap: break-word;
display:inline-block;
}
<div class="comment_content">
<span class="comment_author">Hello</span>
<span class="comment_text">qeqweqweqweqeeqeqweqweqweqweqweqweqweqweqweqweqweqweqweqweqweqweqweqweqweqweqweqweqweqweqweqweqweqweqweqweqeqweqweqweqweqweqweqwewqeqweqweqweqweqweqweqweqweqweqeqeqweqweqweqweqweqweqweqweqweqeqewqweqeq</span>
</div>
Ниже приведены рабочие примеры для достижения желаемого результата: примеры
Mirodil
19 июнь 2017, в 20:55
Поделиться
Используйте стиль word-break
, чтобы определить, где в слове переходить на следующую строку. По умолчанию он использует пробелы или дефисы, но вы можете установить его на break-all
, чтобы разрешить разбиение на любую букву:
.comment_text {
display: inline-block;
word-wrap: break-word;
word-break: break-all;
width: 100%;
}
Steve
05 апр. 2016, в 07:07
Поделиться
Используйте word-break: break-all;
в классе .comment_content
.
Sunil Gehlot
05 апр. 2016, в 07:43
Поделиться
Вы можете использовать
word-break: break-all;
Смотрите здесь скрипку
fiddle
pradeep1991singh
05 апр. 2016, в 07:14
Поделиться
Ещё вопросы
- 0Почему SqlExceptionHelper интерпретирует нарушение логического ограничения как x00
- 0QList :: at () возвращает ссылку на константу?
- 1Javascript цикл через массив с «для» и «ForEach»
- 0Простой таймер обратного отсчета в цикле?
- 0Доступ к текущему экземпляру родительского контроллера повтора
- 0Prestashop: добавить текст на странице оплаты заказа
- 0Динамически добавленные входные данные не отображаются в данных $ _POST
- 0Основное использование устаревших классов
- 1Python / Dash by Plotly: группировка случаев по дате
- 0Нарушение доступа в приложении C
- 0Как убрать дублирование кода между похожими константными и неконстантными функциями-членами в абстрактных классах?
- 1Как запросить firebase из бэкэнда узла с учетными данными клиента
- 1Кнопка «Домой» не отображается при использовании библиотеки поддержки дизайна
- 1D3 v4 силовой ориентированный граф с прямоугольниками
- 0Разделение строк с помощью регулярных выражений путем поиска чисел / символов
- 1Отправить запрос с System.Net.WebClient
- 1Градиенты Pytorch существуют, но веса не обновляются
- 1объединить 2 PDF с штампом itextsharp
- 0Codeigniter по типу возврата из модели
- 0Как разбить строку JSON
- 0События отмены привязки jQuery, объявленные в области видимости
- 0Jquery Сортируемый, предметы внутри ли можно перетаскивать
- 0Изображение из базы данных обрезается
- 1Обнаружить звук свистка в Android
- 0Как перейти к спрайт-изображениям при сохранении существующих переходов
- 1сравнение переменных int, возвращающее логическое значение
- 0Есть ли способ показать максимальное количество предметов в кладке?
- 0структура статический член значение / определение
- 0MySQL Выберите последнюю 1 строку для каждого идентификатора в таблице
- 1Как пользователь ASP.NET заполняется после аутентификации?
- 0HTML-форма — значение телефонного номера не исчезнет в фокусе
- 0оставленный присоединиться ко всем темам только последнее сообщение, заказанное липким и последним сообщением DESC
- 0JQuery анимация пауза возобновить скорость замедляется
- 0Как устранить ошибку System.Data.SqlClient.SqlException на ASP.net?
- 1Какой JAR выбирает Java для определенного импорта?
- 1Изменить изображение при наведении мыши на Binding c # WPF
- 0Удалите ненужные строки, пока Content-Type: text / plain
- 0Когда создается объект подкласса, создается ли второй объект для суперкласса?
- 0СУММА без дублированного ряда с GROUP BY
- 1Почему Eclipse продолжает выделять метод?
- 1Список сортировки, в котором есть объект, содержащий два строковых элемента, которые содержат числа
- 0Перегрузка функций C ++
- 1Chrome Window.open борется
- 0Пул потоков для взаимозависимых задач
- 0Яваскрипт документа писать в IE 9
- 0Извлечь значения между символами в MySQL?
- 1событие android onClick не запускается
- 0В выпадающем меню есть повторяющаяся проблема при выпадении
- 0Добавленный DIV отображается только при изменении размера
- 0Select2 не позволяет разблокировать раскрывающийся список
Я не могу заставить перенос слов работать с этим примером …
<html>
<head></head>
<body>
<table style="table-layout:fixed;">
<tr>
<td style="word-wrap: break-word; width:100px;">ThisStringWillNotWrapThisStringWillNotWrapThisStringWillNotWrapThisStringWillNotWrapThisStringWillNotWrapThisStringWillNotWrapThisStringWillNotWrapThisStringWillNotWrapThisStringWillNotWrap</td>
</tr>
</table>
</body></html>
Я вспомнил, как читал, что нужно было указать макет (что я и сделал), но помимо этого я не уверен, что мне нужно сделать, чтобы это работало. Мне бы очень хотелось, чтобы это работало в Firefox. Спасибо.
РЕДАКТИРОВАТЬ: сбой в Chrome 19 и Firefox 12, он работает в IE8. Я пробовал doctype strict и transitional, ни один из них не работал.
10 ответов
Лучший ответ
Mozilla Firefox решение
Добавлять:
display: inline-block;
К стилю вашего td
.
Браузеры на основе Webkit ( Google Chrome , Safari , …)
Добавлять:
display: inline-block;
word-break: break-word;
К стилю вашего td
.
Примечание : Имейте в виду, что на данный момент break-word
не является частью стандартной спецификации webkit; поэтому вам может быть интересно использовать вместо этого break-all
. Это альтернативное значение обеспечивает, несомненно, радикальное решение; однако он соответствует стандарту.
Opera решение
Добавлять:
display: inline-block;
word-break: break-word;
К стилю вашего td
.
Предыдущий абзац аналогичным образом относится и к Opera.
118
Stencil
18 Ноя 2014 в 02:06
Используйте этот код (взят из css- трюки), которые будут работать во всех браузерах
overflow-wrap: break-word;
word-wrap: break-word;
-ms-word-break: break-all;
/* This is the dangerous one in WebKit, as it breaks things wherever */
word-break: break-all;
/* Instead use this non-standard one: */
word-break: break-word;
/* Adds a hyphen where the word breaks, if supported (No Blink) */
-ms-hyphens: auto;
-moz-hyphens: auto;
-webkit-hyphens: auto;
hyphens: auto;
48
Philipp Kief
14 Сен 2018 в 09:43
Work-Break не имеет ничего общего с inline-block
.
Убедитесь, что вы указали width
и обратите внимание, есть ли какие-либо переопределяющие атрибуты в родительских узлах. Убедитесь, что нет white-space: nowrap
.
См. этот код
<html>
<head>
</head>
<body>
<style scoped>
.parent {
width: 100vw;
}
p {
border: 1px dashed black;
padding: 1em;
font-size: calc(0.6vw + 0.6em);
direction: ltr;
width: 30vw;
margin:auto;
text-align:justify;
word-break: break-word;
white-space: pre-line;
overflow-wrap: break-word;
-ms-word-break: break-word;
word-break: break-word;
-ms-hyphens: auto;
-moz-hyphens: auto;
-webkit-hyphens: auto;
hyphens: auto;
}
}
</style>
<div class="parent">
<p>
Note: Mind that, as for now, break-word is not part of the standard specification for webkit; therefore, you might be interested in employing the break-all instead. This alternative value provides a undoubtedly drastic solution; however, it conforms to
the standard.
</p>
</div>
</body>
</html>
44
Vel
27 Янв 2021 в 07:09
Мне помогла такая комбинация свойств:
display: inline-block;
overflow-wrap: break-word;
word-wrap: break-word;
word-break: normal;
line-break: strict;
hyphens: none;
-webkit-hyphens: none;
-moz-hyphens: none;
9
Fabian Lauer
25 Апр 2019 в 17:03
Чтобы умная пауза (break-word) хорошо работала в разных браузерах, у меня сработал следующий набор правил:
#elm {
word-break:break-word; /* webkit/blink browsers */
word-wrap:break-word; /* ie */
}
-moz-document url-prefix() {/* catch ff */
#elm {
word-break: break-all; /* in ff- with no break-word we'll settle for break-all */
}
}
2
shayuna
6 Мар 2018 в 12:59
max-width: 100px;
white-space: break-spaces;
13
Rubel Hossain
9 Апр 2021 в 14:09
Этот код тоже работает:
<html>
<head></head>
<body>
<table style="table-layout:fixed;">
<tr>
<td style="word-break: break-all; width:100px;">ThisStringWillNotWrapThisStringWillNotWrapThisStringWillNotWrapThisStringWillNotWrapThisStringWillNotWrapThisStringWillNotWrapThisStringWillNotWrapThisStringWillNotWrapThisStringWillNotWrap</td>
</tr>
</table>
</body></html>
1
user10254257user10254257
1 Фев 2019 в 13:09
inline-block
бесполезен в этом сценарии
РЕШЕНИЕ
word-break: normal|break-all|keep-all|break-word|initial|inherit;
Простой ответ на ваши сомнения: используйте выше и убедитесь, чтоwhite-space: nowrap
нигде не используется.
ПРИМЕЧАНИЕ ДЛЯ ЛУЧШЕГО ПОНИМАНИЯ:
-
word-wrap
/overflow-wrap
используется для разрыва слов, которые переполняют свой контейнер -
Свойство
word-break
разбивает все слова в конце строки, даже те, которые обычно переносятся на другую строку и не переполняют свой контейнер. -
word-wrap
является исторической и нестандартной собственностью. Он был переименован вoverflow-wrap
, но остается псевдонимом, браузеры должны поддерживать его в будущем. Многие браузеры (особенно старые) не поддерживаютoverflow-wrap
и требуютword-wrap
в качестве запасного варианта (который поддерживается всеми). -
Если вы хотите угодить W3C, вам следует подумать о том, чтобы объединить и то, и другое в своем CSS. Если вы этого не сделаете, можно использовать только
word-wrap
.
1
Ritu Gupta
18 Сен 2020 в 16:32
word-wrap
собственность работает с display:inline-block
:
display: inline-block;
word-wrap: break-word;
width: 100px;
0
juanlumn
1 Фев 2019 в 13:56
Просто укажите ширину контейнера 100 и затем добавьте display: block
.
<div class="parent"><span>dummy text dummy text dummy text dummy text </span></div>
.parent
{
width:100%;
display:block
}
0
Commander Tvis
17 Сен 2021 в 12:04
почему CSS правит
a {
word-wrap: break-word;
}
с участием
<div>
<a href="...">verylongurlherewithnospaces</a>
</div>
не обертывание и не заставляет окно показывать полосу прокрутки, тогда как
div {
word-wrap: break-word;
}
будет ли обертывание в его якорном дочернем тексте нормально?
ОБНОВЛЕНИЕ: только что заметили (см. поле URL-адреса экземпляра L3ST по адресу form при изменении размера окна), что мне нужен word-break: break-all вместо word-wrap: break-word, кроме предлагаемого display: inline-block , поэтому теперь используем:
a
{
word-break: break-all !important; /* make sure containers don't override */
display: inline-block !important;
}
который отлично работает