Что такое text wrap

textwrap — Обёртывание и заполнение текста¶

Исходный код: Lib/textwrap.py

Оборачивает отдельный абзац в text (строку), поэтому длина каждой строки не превышает width символов. Возвращает список строк вывода без финальных символов новой строки.

Оборачивает отдельный абзац в text и возвращает единственную строку, содержащую обернутый абзац. fill() — это сокращение для:

Свернуть и усечь данный text, чтобы он соответствовал данному width.

Сначала сворачиваются пробелы в text (все пробелы заменяются одиночными пробелами). Если результат соответствует width, он возвращается. В противном случае с конца отбрасывается достаточно слов, чтобы оставшиеся слова плюс placeholder поместились в width :

Добавлено в версии 3.4.

Удалить все общие начальные пробелы из каждой строки в text.

Это можно использовать для выравнивания строк в тройных кавычках с левым краем отображения, при этом они будут отображаться в исходном коде в форме с отступом.

Обратите внимание, что табуляция и пробелы обрабатываются как пробелы, но они не равны: считается, что строки » hello» и «\thello» не содержат общих ведущих пробелов.

Строки, содержащие только пробелы, игнорируются на входе и нормализуются до одного символа новой строки на выходе.

Добавить prefix в начало выбранных строк в text.

По умолчанию prefix добавляется ко всем строкам, которые не состоят исключительно из пробелов (включая любые окончания строк).

Необязательный аргумент predicate можно использовать для управления отступом строк. Например, легко добавить prefix даже к пустым строкам и строкам, состоящим только из пробелов:

Добавлено в версии 3.3.

Текст предпочтительно размещать по пробелам и сразу после дефисов в словах с переносом; только тогда длинные слова будут разбиты, если необходимо, если TextWrapper.break_long_words не установлен в ложь.

class textwrap. TextWrapper ( **kwargs ) ¶

Конструктор TextWrapper принимает ряд необязательных ключевых аргументов. Каждый ключевой аргумент соответствует атрибуту экземпляра, например:

Вы можете повторно использовать один и тот же объект TextWrapper много раз, и вы можете изменить любые его параметры, напрямую назначая атрибуты экземпляра между применениями.

Атрибуты экземпляра TextWrapper (и ключевые аргументы конструктора) следующие:

(По умолчанию: True ) Если истинно, то все символы табуляции в text будут заменены пробелами с использованием метода expandtabs() из text.

(По умолчанию: 8 ) Если expand_tabs истинно, то все символы табуляции в text будут расширены до нуля или более пробелов, в зависимости от текущего столбца и заданного размера табуляции.

Добавлено в версии 3.3.

(По умолчанию: True ) Если истинно, после раскрытия табуляции, но перед переносом, метод wrap() заменит каждый пробельный символ одним пробелом. Заменяются следующие символы пробела: табуляция, новая строка, вертикальная табуляция, перевод страницы и возврат каретки ( ‘\t\n\v\f\r’ ).

Если expand_tabs ложно, а replace_whitespace — истина, каждый символ табуляции будет заменён одним пробелом, который не совпадает с расширением табуляции.

Если replace_whitespace ложно, новые строки могут появиться в середине строки и вызвать странный вывод. По этой причине текст должен быть разделен на абзацы (используя str.splitlines() или аналогичный), которые обёрнуты отдельно.

(По умолчанию: True ) если истинно, пробелы в начале и конце каждой строки (после переноса, но до отступа) удаляются. Однако пробел в начале абзаца не удаляется, если за ним следует не пробел. Если отбрасываемый пробел занимает всю строку, вся строка удаляется.

(По умолчанию: » ) строка, которая будет добавлена к первой строке обёрнутого вывода. Считается по длине первой строки. Пустая строка без отступа.

(По умолчанию: » ) Строка, которая будет добавлена ко всем строкам обёрнутого вывода, кроме первой. Учитывается длина каждой строки, кроме первой.

Поскольку алгоритм обнаружения предложений основан на string.lowercase для определения «строчной буквы» и соглашении об использовании двух пробелов после точки для разделения предложений в одной строке, он специфичен для англоязычных текстов.

(По умолчанию: True ) Если истинно, перенос будет происходить предпочтительно по пробелам и сразу после дефисов в составных словах, как это принято в английском языке. Если ложно, только пробелы будут рассматриваться как потенциально хорошие места для разрывов строк, но вам нужно установить break_long_words в ложь, если вы хотите действительно незащищенные слова. По умолчанию в предыдущих версиях всегда разрешалось разбивать слова через дефис.

Добавлено в версии 3.4.

(По умолчанию: ‘ [. ]’ ) строка, которая появится в конце выходного текста, если он был усечён.

Добавлено в версии 3.4.

TextWrapper также предоставляет некоторые общедоступные методы, аналогичные вспомогательным функциям на уровне модуля:

Оборачивает отдельный абзац в text и возвращает единственную строку, содержащую обёрнутый абзац.

Источник

Wrapping and breaking text

This guide explains the various ways in which overflowing text can be managed in CSS.

What is overflowing text?

In CSS, if you have an unbreakable string such as a very long word, by default it will overflow any container that is too small for it in the inline direction. We can see this happening in the example below: the long word is extending past the boundary of the box it is contained in.

Finding the min-content size

Using min-content is therefore one possibility for overflowing boxes. If it is possible to allow the box to grow to be the minimum size required for the content, but no bigger, using this keyword will give you that size.

Breaking long words

If the box needs to be a fixed size, or you are keen to ensure that long words can’t overflow, then the overflow-wrap property can help. This property will break a word once it is too long to fit on a line by itself.

In this next example, you can compare the difference between the two properties on the same string of text.

This might be useful if you want to prevent a large gap from appearing if there is just enough space for the string. Or, where there is another element that you would not want the break to happen immediately after.

In the example below there is a checkbox and label. Let’s say, you want the label to break should it be too long for the box. However, you don’t want it to break directly after the checkbox.

Adding hyphens

element»>The element

If you know where you want a long string to break, then it is also possible to insert the HTML element. This can be useful in cases such as displaying a long URL on a page. You can then add the property in order to break the string in sensible places that will make it easier to read.

Источник

textwrap — Text wrapping and filling¶

Source code: Lib/textwrap.py

Wraps the single paragraph in text (a string) so every line is at most width characters long. Returns a list of output lines, without final newlines.

See the TextWrapper.wrap() method for additional details on how wrap() behaves.

Wraps the single paragraph in text, and returns a single string containing the wrapped paragraph. fill() is shorthand for

Collapse and truncate the given text to fit in the given width.

First the whitespace in text is collapsed (all whitespace is replaced by single spaces). If the result fits in the width, it is returned. Otherwise, enough words are dropped from the end so that the remaining words plus the placeholder fit within width :

Remove any common leading whitespace from every line in text.

This can be used to make triple-quoted strings line up with the left edge of the display, while still presenting them in the source code in indented form.

Note that tabs and spaces are both treated as whitespace, but they are not equal: the lines » hello» and «\thello» are considered to have no common leading whitespace.

Lines containing only whitespace are ignored in the input and normalized to a single newline character in the output.

Add prefix to the beginning of selected lines in text.

By default, prefix is added to all lines that do not consist solely of whitespace (including any line endings).

The optional predicate argument can be used to control which lines are indented. For example, it is easy to add prefix to even empty and whitespace-only lines:

Text is preferably wrapped on whitespaces and right after the hyphens in hyphenated words; only then will long words be broken if necessary, unless TextWrapper.break_long_words is set to false.

class textwrap. TextWrapper ( ** kwargs ) В¶

The TextWrapper constructor accepts a number of optional keyword arguments. Each keyword argument corresponds to an instance attribute, so for example

You can re-use the same TextWrapper object many times, and you can change any of its options through direct assignment to instance attributes between uses.

The TextWrapper instance attributes (and keyword arguments to the constructor) are as follows:

(default: True ) If true, then all tab characters in text will be expanded to spaces using the expandtabs() method of text.

(default: 8 ) If expand_tabs is true, then all tab characters in text will be expanded to zero or more spaces, depending on the current column and the given tab size.

(default: True ) If true, after tab expansion but before wrapping, the wrap() method will replace each whitespace character with a single space. The whitespace characters replaced are as follows: tab, newline, vertical tab, formfeed, and carriage return ( ‘\t\n\v\f\r’ ).

If expand_tabs is false and replace_whitespace is true, each tab character will be replaced by a single space, which is not the same as tab expansion.

If replace_whitespace is false, newlines may appear in the middle of a line and cause strange output. For this reason, text should be split into paragraphs (using str.splitlines() or similar) which are wrapped separately.

(default: True ) If true, whitespace at the beginning and ending of every line (after wrapping but before indenting) is dropped. Whitespace at the beginning of the paragraph, however, is not dropped if non-whitespace follows it. If whitespace being dropped takes up an entire line, the whole line is dropped.

(default: » ) String that will be prepended to the first line of wrapped output. Counts towards the length of the first line. The empty string is not indented.

(default: » ) String that will be prepended to all lines of wrapped output except the first. Counts towards the length of each line except the first.

Since the sentence detection algorithm relies on string.lowercase for the definition of “lowercase letter”, and a convention of using two spaces after a period to separate sentences on the same line, it is specific to English-language texts.

(default: True ) If true, wrapping will occur preferably on whitespaces and right after hyphens in compound words, as it is customary in English. If false, only whitespaces will be considered as potentially good places for line breaks, but you need to set break_long_words to false if you want truly insecable words. Default behaviour in previous versions was to always allow breaking hyphenated words.

(default: ‘ [. ]’ ) String that will appear at the end of the output text if it has been truncated.

TextWrapper also provides some public methods, analogous to the module-level convenience functions:

Wraps the single paragraph in text (a string) so every line is at most width characters long. All wrapping options are taken from instance attributes of the TextWrapper instance. Returns a list of output lines, without final newlines. If the wrapped output has no content, the returned list is empty.

Wraps the single paragraph in text, and returns a single string containing the wrapped paragraph.

Источник

CSS: о выводе коротких и длинных текстов

Когда, пользуясь возможностями CSS, создают макет страницы, важно учитывать то, что в различных элементах этой страницы могут выводиться короткие и длинные текстовые материалы. Страницы, кроме того, нужно тестировать на предмет того, как они отображают тексты разной длины. Если разработчик чётко понимает то, как обрабатывать различные тексты, выводимые на странице, если он соответствующим образом спроектировал макет, это способно избавить его от множества неприятных неожиданностей.

Что такое text wrap. Смотреть фото Что такое text wrap. Смотреть картинку Что такое text wrap. Картинка про Что такое text wrap. Фото Что такое text wrap

Есть много ситуаций, в которых изменение некоего текстового фрагмента путём добавления или удаления всего одного слова способно заметно изменить внешний вид страницы, или, что ещё хуже «поломать» макет и сделать невозможной нормальной работу с сайтом. Когда я только начинал изучать CSS, я недооценивал последствия, к которым может привести добавление единственного слова в некий элемент или удаление из него всего одного слова. Здесь я хочу поделиться различными способами обработки текстов разной длины средствами CSS.

Обзор проблем

Прежде чем я расскажу о том, как работать с текстами средствами CSS, мне хотелось бы остановиться на проблемах, связанных с выводом текстов. Предположим, у нас есть вертикальное меню.

Что такое text wrap. Смотреть фото Что такое text wrap. Смотреть картинку Что такое text wrap. Картинка про Что такое text wrap. Фото Что такое text wrap

Вертикальное меню при переносе имени пользователя на вторую строку выглядит необычно

В начале меню выводится имя пользователя. Длина имени может варьироваться. Особенно — если речь идёт о мультиязычных сайтах. В правой части вышеприведённого примера видно, что имя пользователя, при достижении им определённой длины, занимает две строки. По этому поводу можно задаться несколькими вопросами:

Что такое text wrap. Смотреть фото Что такое text wrap. Смотреть картинку Что такое text wrap. Картинка про Что такое text wrap. Фото Что такое text wrap

Слово вышло за пределы контейнера

Фронтенд-разработчик должен быть готов к такому, заранее приняв решение о том, как страница должна вести себя в подобных ситуациях. К счастью, существуют CSS-свойства, созданные специально для того чтобы решать подобные проблемы.

Кроме того, проблемы на страницах могут вызывать не только слишком длинные, но и слишком короткие тексты. Вывод короткого текста в элементе, не рассчитанном на такой текст, может либо «сломать» интерфейс, либо, как минимум, сделать так, что этот элемент будет странно выглядеть. Вот пример.

Что такое text wrap. Смотреть фото Что такое text wrap. Смотреть картинку Что такое text wrap. Картинка про Что такое text wrap. Фото Что такое text wrap

Кнопка, в которой выводится слишком короткий текст, выглядит необычно

Как видите, проблемы могут возникать как при выводе длинных, так и при выводе коротких текстов. Но, прибегнув к некоторым возможностям CSS, мы можем, по меньшей мере, ослабить влияние этих проблем на внешний вид и работоспособность страниц.

Длинные тексты

Теперь, когда мы обсудили проблемы, поговорим о возможностях CSS, которые позволяют наладить нормальную работу с длинными текстами.

▍Свойство overflow-wrap

Свойство overflow-wrap позволяет сообщить браузеру о том, что он должен разорвать слово, перенеся его на новую строку, в том случае, если слово не помещается в контейнер.

Что такое text wrap. Смотреть фото Что такое text wrap. Смотреть картинку Что такое text wrap. Картинка про Что такое text wrap. Фото Что такое text wrap

Без использования свойства overflow-wrap слово выходит за пределы контейнера

▍Свойство hyphens

Что такое text wrap. Смотреть фото Что такое text wrap. Смотреть картинку Что такое text wrap. Картинка про Что такое text wrap. Фото Что такое text wrap

Без использования свойства hyphens браузер не переносит слово на новую строку

Применяя значение auto свойства hyphens важно помнить о том, что браузер будет переносить любое слово, которое не помещается в строку. Что это значит? Взгляните на следующий рисунок.

Что такое text wrap. Смотреть фото Что такое text wrap. Смотреть картинку Что такое text wrap. Картинка про Что такое text wrap. Фото Что такое text wrap

Браузер может использовать знак переноса в любом слове

Обратите внимание на то, что браузер использовал знак переноса в слове, которое вполне может быть целиком перенесено на новую строку. При использовании свойства hyphens: auto браузер способен разрывать даже такие слова, которые не выходят за пределы контейнеров.

▍Обрезка однострочного текста

При обрезке текста, для вывода которого предусмотрено поле, вмещающее лишь одну строку, предложение укорачивается, а в его конец добавляется многоточие, указывающее на то, что текст, на самом деле, длиннее того фрагмента, который выведен на экране.

Что такое text wrap. Смотреть фото Что такое text wrap. Смотреть картинку Что такое text wrap. Картинка про Что такое text wrap. Фото Что такое text wrap

Слева — однострочный текст, при выводе которого обрезка не используется. Справа — текст, при выводе которого используется обрезка

В CSS нет свойства, которое могло бы называться «text-truncation», применимого для настройки автоматической обрезки текстов. Тут нам понадобится комбинация из нескольких свойств:

▍Обрезка многострочного текста

Если нужно обрезать текст, для вывода которого предусмотрено поле, вмещающее несколько строк, нужно прибегнуть к CSS-свойству line-clamp :

Что такое text wrap. Смотреть фото Что такое text wrap. Смотреть картинку Что такое text wrap. Картинка про Что такое text wrap. Фото Что такое text wrap

Сравнение обрезки однострочного и многострочного текста

Что такое text wrap. Смотреть фото Что такое text wrap. Смотреть картинку Что такое text wrap. Картинка про Что такое text wrap. Фото Что такое text wrap

Настройка свойства padding приводит к нарушению вывода текста

▍Вывод длинных текстов в полях, поддерживающих горизонтальную прокрутку

В некоторых ситуациях непрактично организовывать разрыв слов или их перенос на новые строки с использованием дефиса. Например, если имеется поле, в котором должен выводиться фрагмент JavaScript-кода, такой код будет тяжело читать в том случае, если слова будут выводиться с переносом на новые строки. В подобном случае облегчить работу с текстом можно, предусмотрев возможность горизонтальной прокрутки содержимого поля.

Что такое text wrap. Смотреть фото Что такое text wrap. Смотреть картинку Что такое text wrap. Картинка про Что такое text wrap. Фото Что такое text wrap

Поле, в котором осуществляется перенос слов на новые строки, и поле, в котором применяется горизонтальная прокрутка

▍Свойство padding

Что такое text wrap. Смотреть фото Что такое text wrap. Смотреть картинку Что такое text wrap. Картинка про Что такое text wrap. Фото Что такое text wrap

Проблема при выводе подписи к флажку

Тут имеется набор флажков. Подпись одного из них выводится слишком близко к другому. Причина этого заключается в том, что при проектировании макета, используемого для вывода флажков, не настроены промежутки между ячейками сетки, в которых размещены данные. Этот пример, кстати, взят с реального сайта (Techcrunch).

Короткие тексты

Я знаю о том, что проблемы, связанные с короткими текстами распространены не так сильно, как проблемы, связанные с длинными текстами. Но возможность их возникновения, всё равно, очень важно учитывать при проектировании пользовательских интерфейсов.

▍Установка минимальной ширины элемента

Что такое text wrap. Смотреть фото Что такое text wrap. Смотреть картинку Что такое text wrap. Картинка про Что такое text wrap. Фото Что такое text wrap

Кнопка, в которой выводится слишком короткий текст

Что такое text wrap. Смотреть фото Что такое text wrap. Смотреть картинку Что такое text wrap. Картинка про Что такое text wrap. Фото Что такое text wrap

Результаты настройки минимальной ширины кнопки

Теперь, когда мы поговорили о проблемах вывода длинных и коротких текстов и о решениях этих проблем, давайте разберём несколько практических примеров.

Практические примеры

▍Карточка профиля пользователя

Карточки профиля пользователя часто содержат достаточно длинные тексты. В частности, проектируя подобную карточку, разработчику почти невозможно заранее узнать о том, насколько длинным будет имя пользователя. Как же быть?

Что такое text wrap. Смотреть фото Что такое text wrap. Смотреть картинку Что такое text wrap. Картинка про Что такое text wrap. Фото Что такое text wrap

Имя пользователя обычной длины, помещающееся на карточке целиком. Обрезанное длинное имя, выводимое в одной строке. Обрезанное длинное имя, выводимое в нескольких строках

Проектируя подобную карточку можно подготовиться к выводу в ней длинного имени пользователя, применив один из следующих двух приёмов:

Как видите, длинный текст можно обрезать, выведя его либо в одной строке, либо — в нескольких строках.

▍Навигационные элементы

При работе над макетами мультиязычных сайтов нужно учитывать тот факт, что тексты, имеющие один и тот же смысл, но написанные на разных языках, могут иметь различную длину.

Что такое text wrap. Смотреть фото Что такое text wrap. Смотреть картинку Что такое text wrap. Картинка про Что такое text wrap. Фото Что такое text wrap

Названия навигационных элементов, выведенные на разных языках

Длина слова About из LTR-языка больше, чем длина аналогичного по смыслу слова из RTL-языка. При выводе на таком языке соответствующий пункт навигационного меню выглядит слишком коротким. Известно, что если в дизайне страниц используются маленькие области, с которыми нужно взаимодействовать пользователям, это плохо сказывается на UX. Как исправить проблему? В данном случае можно просто настроить минимальную ширину навигационного элемента:

Что такое text wrap. Смотреть фото Что такое text wrap. Смотреть картинку Что такое text wrap. Картинка про Что такое text wrap. Фото Что такое text wrap

Решение проблемы короткого текста

Если вас интересуют вопросы вывода данных на разных языках — взгляните на этот мой материал.

▍Поле для вывода содержимого статей

В полях для вывода объёмных текстов вполне могут попадаться очень длинные слова, не помещающиеся в контейнеры. Особенно часто с этим можно столкнуться при работе с сайтами на мобильных устройствах.

Что такое text wrap. Смотреть фото Что такое text wrap. Смотреть картинку Что такое text wrap. Картинка про Что такое text wrap. Фото Что такое text wrap

Длинное слово выходит за пределы контейнера

Например, эту проблему можно решить так:

▍Оформление виртуальной корзины для покупок

Названия товаров, которые покупатели интернет-магазинов «кладут» в корзины, могут быть очень разными. Это может быть и одно слово, и несколько строк. В следующем примере длина названия товара такова, что текст перекрывается кнопкой для удаления товара из корзины. Причина этого в том, что при проектировании макета корзины не было уделено достаточного внимания настройке расстояния между элементами.

Что такое text wrap. Смотреть фото Что такое text wrap. Смотреть картинку Что такое text wrap. Картинка про Что такое text wrap. Фото Что такое text wrap

Вывод коротких и длинных названий в макете, который настроен неправильно

Решить эту проблему можно, настроив внутренние или внешние отступы элементов. Конкретные действия зависят от ситуации. Здесь я приведу простой пример, предусматривающий использование свойства margin-right при настройке элемента, выводящего название товара.

▍Flexbox-макеты и вывод длинных текстов

При выводе длинных текстов во Flexbox-макетах возможна ситуация, когда такие тексты переполняют родительские элементы. Взгляните на следующий пример.

Что такое text wrap. Смотреть фото Что такое text wrap. Смотреть картинку Что такое text wrap. Картинка про Что такое text wrap. Фото Что такое text wrap

Элементы выглядят нормально

Вот разметка к этому примеру:

Если имя пользователя не слишком длинно — всё выглядит нормально. Но что случится в том случае, если имя окажется достаточно длинным? В такой ситуации текст переполнит родительский элемент, а это «поломает» макет.

Что такое text wrap. Смотреть фото Что такое text wrap. Смотреть картинку Что такое text wrap. Картинка про Что такое text wrap. Фото Что такое text wrap

Длинное имя пользователя портит внешний вид страницы

После этого даже вывод в элементе длинного имени пользователя не испортит макет. Некоторые подробности об использовании свойства min-width при разработке Flexbox-макетов вы можете найти в этом материале.

Итоги

Надеюсь, теперь вы сможете справиться с проектированием элементов, поддерживающих аккуратный вывод длинных и коротких текстов. Я с большим удовольствием писал эту статью. Я, благодаря этому, вспомнил некоторые тонкости работы с разными текстами. А статья будет служить мне хорошим напоминанием о том, как важно обращать внимание на подготовку элементов страниц к выводу текстов разной длины.

Сталкивались ли вы с проблемами, связанными с выводом текстов разной длины на веб-страницах?

Источник

Полное руководство по word-wrap, overflow-wrap и word-break в CSS

Дата публикации: 2021-12-10

Что такое text wrap. Смотреть фото Что такое text wrap. Смотреть картинку Что такое text wrap. Картинка про Что такое text wrap. Фото Что такое text wrap

От автора: в наши дни очень важно сделать сайт адаптивным, чтобы он правильно отображался на всех устройствах. К сожалению, несмотря на все усилия, вы все равно можете получить неработающие макеты. Иногда макеты нарушаются из-за того, что некоторые слова слишком длинные, чтобы уместиться в контейнере.

Переполнение контента может произойти, когда вы имеете дело с пользовательским контентом, который вы не можете контролировать. Типичный пример — раздел комментариев в блоге. Следовательно, вам необходимо применить соответствующий стиль, чтобы содержимое не переполняло свой контейнер.

Вы можете использовать свойства CSS word-wrap, overflow-wrap или word-break для обертывания или переноса слов, которые в противном случае переполнили бы их контейнер. Эта статья представляет собой подробное руководство по свойствам CSS word-wrap, overflow-wrap и word-break, а также о том, как вы можете использовать их, чтобы не допустить, чтобы переполнение содержимого разрушало ваш красиво оформленный макет.

Прежде чем мы начнем, давайте разберемся, как браузеры переносят контент в следующую секцию.

Как происходит перенос контента в браузерах?

Браузеры выполняют перенос содержимого в разрешенные брейкпоинты, называемый «мягкой оберткой». Браузер будет обертывать контент с использованием мягкой обертки, если таковая возможна, чтобы минимизировать переполнение контента.

Что такое text wrap. Смотреть фото Что такое text wrap. Смотреть картинку Что такое text wrap. Картинка про Что такое text wrap. Фото Что такое text wrap

Практический курс по верстке адаптивного сайта с нуля!

Изучите курс и узнайте, как верстать современные сайты на HTML5 и CSS3

В английской и большинстве подобных ей системах письма возможности мягкой обертки по умолчанию появляются на границах слов при отсутствии переносов. Поскольку слова ограничены пробелами и знаками препинания, именно здесь используются мягкие обертки.

Хотя в английских текстах для символов пробела используются мягкие обертки, для неанглийских систем письма ситуация может быть иной. Некоторые языки не используют пробелов для разделения слов. Следовательно, упаковка содержимого зависит от языка или системы письма. Значение атрибута lang, которое вы указываете в элементе html, в основном используется для определения того, какая языковая система используется. В этой статье основное внимание будет уделено системе письма на английском языке.

Переноса по умолчанию при использовании мягкой обертки может быть недостаточно, если вы имеете дело с длинным непрерывным текстом, например URL-адресами или пользовательским контентом, который у вас недостаточно или совсем не контролируется.

Прежде чем мы перейдем к подробному объяснению этих свойств CSS, давайте посмотрим на различия между мягким переносом и принудительным переносом строки в разделе ниже.

В чем разница между мягким и принудительным переносом строки?

Любой перенос текста, который происходит при использовании мягкого переноса, называется разрывом мягкого переноса. Чтобы перенос происходил при использовании мягкого обертывания, необходимо убедиться, что обертывание включено. Например, установка значения nowrap для свойства white-space отключит перенос.

С другой стороны, принудительные разрывы строк возникают из-за явного управления разрывом строк или указания конца или начала блоков текста.

CSS свойства word-wrap и overflow-wrap

Название word-wrap — это устаревшее имя свойства overflow-wrap. Word-wrap изначально было расширением Microsoft. Оно не было частью стандарта CSS, хотя большинство браузеров реализовали его под названием word-wrap. Согласно проекту спецификации CSS3, браузеры должны рассматривать word-wrap как устаревший псевдоним для свойства overflow-wrap.

В последних версиях популярных веб-браузеров реализовано свойство overflow-wrap. В проекте спецификации CSS3 указано следующее определение overflow-wrap: Это свойство указывает, может ли браузер разбивать строку на недопустимые точки переноса, чтобы предотвратить переполнение, когда неразрывная строка слишком длинна, чтобы поместиться в границах контейнера.

Если у вас есть свойство white-space для элемента, вам необходимо установить для него значение allow, чтобы разрешить эффект переноса для overflow-wrap. Ниже приведены значения свойства overflow-wrap. Вы также можете использовать глобальные значения inherit, initial, revert и unset для overflow-wrap, но здесь мы не будем их рассматривать.

Ниже мы рассмотрим значения свойства CSS overflow-wrap, чтобы понять его поведение.

Normal

Применение значения normal заставит браузер использовать поведение разрыва строки по умолчанию в системе. Поэтому для английского языка и других подобных системах письма разрывы строк будут происходить через пробелы и дефисы:

На изображении ниже в тексте есть слово, длина которого превышает длину контейнера. Поскольку нет возможности мягкого переноса, а значение свойства overflow-wrap равно normal, слово переполняет свой контейнер. Это является поведением системы при переносе строк по умолчанию.

Что такое text wrap. Смотреть фото Что такое text wrap. Смотреть картинку Что такое text wrap. Картинка про Что такое text wrap. Фото Что такое text wrap

Anywhere

Использование значения в аnywhere приведет к разрыву неразрывной строки в произвольных точках между двумя символами. Аnywhere не будет добавлять символ дефиса, даже если вы примените свойство hyphens к этому элементу.
Браузер разорвет слово только в том случае, если отображение слова приведет к переполнению. Если слово вызывает переполнение, оно будет разорвано в точке, где это переполнение произошло.

Когда вы используете аnywhere, браузер будет учитывать возможности мягкого переноса, предоставляемые разрывом слова, при вычислении внутренних размеров min-content:

В отличие от предыдущего примера, где мы использовали overflow-wrap: normal, на изображении ниже мы используем overflow-wrap :where. Слово-переполнение, которое невозможно разбить, разбивается на фрагменты текста с помощью overflow-wrap: anywhere, чтобы оно поместилось в своем контейнере.

Что такое text wrap. Смотреть фото Что такое text wrap. Смотреть картинку Что такое text wrap. Картинка про Что такое text wrap. Фото Что такое text wrap

Значение anywhere не поддерживается некоторыми браузерами. На изображении ниже показана поддержка браузерами по данным caniuse.com. Поэтому не рекомендуется использовать overflow-wrap: anywhere, если вы хотите иметь более высокую поддержку браузера.

Что такое text wrap. Смотреть фото Что такое text wrap. Смотреть картинку Что такое text wrap. Картинка про Что такое text wrap. Фото Что такое text wrap

Break-word

Значение break-word похоже на любое другое с точки зрения функциональности. Если браузер может перенести слово без переполнения, то он это сделает. Однако, если слово все еще переполняет контейнер, даже когда оно находится в новой строке, браузер разделит его в точке, где снова произошло бы переполнение:

На изображении ниже показано, как браузер прерывает переполненный текст в предыдущем разделе, когда вы применяете overflow-wrap: break-word. Вы заметите, что изображение ниже выглядит так же, как изображение в последнем примере. Разница между overflow-wrap: anywhere и overflow-wrap: break-word заключается в вычислении внутренних размеров min-content.

Что такое text wrap. Смотреть фото Что такое text wrap. Смотреть картинку Что такое text wrap. Картинка про Что такое text wrap. Фото Что такое text wrap

Разница между anywhere и break-word очевидна при вычислении внутренних размеров min-content. С break-word браузер не учитывает возможности мягкого переноса, предоставляемые разрывом слова, при вычислении внутренних размеров min-content, но он учитывает возможности мягкого переноса при использовании anywhere.

Значение break-word имеет достойный охват среди последних версий десктопных браузеров. К сожалению, этого нельзя сказать об их мобильном аналоге. Поэтому безопаснее использовать унаследованный word-wrap: break-word вместо более нового overflow-wrap: break-word.

На изображении ниже показана поддержка браузеров overflow-wrap: break-word согласно caniuse.com. Вы заметите, что последние версии десктопных браузеров имеют поддержку, в то время как поддержка некоторых мобильных браузеров неизвестна.

Что такое text wrap. Смотреть фото Что такое text wrap. Смотреть картинку Что такое text wrap. Картинка про Что такое text wrap. Фото Что такое text wrap

Свойство Word-break

Word-break — еще одно свойство CSS, которое вы можете использовать для указания возможности мягкого переноса между символами. Вы можете использовать это свойство, чтобы разбить слово в том месте, где могло произойти переполнение, и перенести его на следующую строку.

Ниже приводится то, что говорится о свойстве CSS word-break в спецификации CSS3:

Что такое text wrap. Смотреть фото Что такое text wrap. Смотреть картинку Что такое text wrap. Картинка про Что такое text wrap. Фото Что такое text wrap

Практический курс по верстке адаптивного сайта с нуля!

Изучите курс и узнайте, как верстать современные сайты на HTML5 и CSS3

Это свойство определяет возможности мягкого переноса между буквами, то есть там, где это «нормально» и допустимо для разрывов строк текста. Word-break контролирует, какие типы букв браузер может объединять в неразрывные «слова», заставляя символы CJK вести себя как текст, не относящийся к CJK, или наоборот.

Ниже приведены возможные значения CSS-свойства word-break. Как и для overflow-wrap, вы также можете использовать глобальные значения inherit, initial, revert и unset, но мы не будем рассматривать их здесь:

Break-word также является значением для CSS-свойства word-break, хотя оно устарело. Однако, браузеры по-прежнему поддерживают его. Указание этого свойства имеет тот же эффект, что и word-break: normal и overflow-wrap :where.

Теперь, когда мы знакомы с CSS-свойством break-word и соответствующими ему значениями, давайте подробно рассмотрим их.

Normal

Установка для свойства word-break значение normal будет применять правила разбиения по словам по умолчанию:

На изображении ниже показано, что происходит, когда вы применяете стиль word-break: normal к блоку текста, который содержит слово длиннее, чем его контейнер. Вы видите, что в браузере действуют обычные правила разбиения на слова.

Что такое text wrap. Смотреть фото Что такое text wrap. Смотреть картинку Что такое text wrap. Картинка про Что такое text wrap. Фото Что такое text wrap

Break-all

Значение break-all вставит разрыв строки именно в том месте, где текст переполнился бы для некитайских, неяпонских и некорейских систем письма. Слово не будет помещено в отдельную строку, даже если это предотвратит необходимость вставки разрыва строки:

На изображении ниже я применил стиль word-break:break-all к элементу p шириной 240 пикселей, содержащему переполненный текст. Браузер вставил разрыв строки в точке, где могло произойти переполнение, и перенес оставшийся текст в следующую строку.

Что такое text wrap. Смотреть фото Что такое text wrap. Смотреть картинку Что такое text wrap. Картинка про Что такое text wrap. Фото Что такое text wrap

Использование break-all приведет к разрыву слова между двумя символами именно в том месте, где произойдет переполнение в английском и других родственных языковых системах. Однако это не применимо к текстам на китайском, японском и корейском языках (CJK).

Он не применяет то же поведение к текстам CJK, потому что системы письма CJK имеют свои собственные правила для применения брейкпоинтов. Создание разрыва строки между двумя символами произвольно во избежание переполнения может значительно изменить общий смысл текста. Для систем CJK браузер будет применять разрывы строк в том месте, где такие разрывы разрешены.

На изображении ниже показана поддержка браузером word-break: break-word согласно caniuse.com. Хотя последние версии современных веб-браузеров поддерживают это значение, поддержка среди некоторых мобильных браузеров неизвестна.

Что такое text wrap. Смотреть фото Что такое text wrap. Смотреть картинку Что такое text wrap. Картинка про Что такое text wrap. Фото Что такое text wrap

Keep-all

Если вы используете значение keep-all, браузер не будет применять разрывы слов к текстам CJK, даже если происходит переполнение содержимого. Эффект от применения значения keep-all такой же, как и у normal для систем письма, отличных от CJK:

На изображении ниже применение word-break: keep-all имеет тот же эффект, что и word-break: normal, потому что я использую систему письма, отличную от CJK (английский язык).

Что такое text wrap. Смотреть фото Что такое text wrap. Смотреть картинку Что такое text wrap. Картинка про Что такое text wrap. Фото Что такое text wrap

На изображении ниже показана поддержка браузером word-break: keep-all согласно caniuse.com. Это значение поддерживается в большинстве популярных десктопных браузеров. К сожалению, это не относится к мобильным браузерам.

Что такое text wrap. Смотреть фото Что такое text wrap. Смотреть картинку Что такое text wrap. Картинка про Что такое text wrap. Фото Что такое text wrap

Теперь, когда мы рассмотрели свойства CSS overflow-wrap и word-break, в чем разница между ними?

В чем разница между overflow-wrap и разр word-break?

Вы можете использовать CSS свойства overflow-wrap и word-break для управления переполнением содержимого. Однако существуют различия в способах обработки этих двух свойств.

Использование overflow-wrap приведет к переносу всего переполненного слова в новую строку, если оно может поместиться в одну строку, не переполняя свой контейнер. Браузер разорвет слово только в том случае, если он не сможет разместить слово в новой строке без переполнения. В большинстве случаев свойство overflow-wrap или его устаревшее название word-wrap может быть достаточным для управления переполнением содержимого.

Свойство overflow-wrap относительно новое, поэтому его поддержка браузером ограничена. Вместо этого вы можете использовать устаревшее название word-wrap, если вам нужна более высокая поддержка браузером.

С другой стороны, word-break безжалостно разорвет слово, которое выходит за границы, между двумя символами, даже если размещение его в новой строке устранит необходимость в разрыве слова. Кроме того, некоторые системы письма, такие как системы письма CJK, имеют строгие правила разбиения по словам, которые браузер принимает во внимание при создании разрывов строк с помощью word-break.

Заключение

Как указывалось в предыдущих разделах, overflow-wrap и word-break во многом схожи. Вы можете использовать оба из них для управления разрывом строки.

Название overflow-wrap является псевдонимом устаревшего свойства word-wrap. Следовательно, вы можете использовать их как взаимозаменяемые. Однако стоит отметить, что поддержка браузером нового свойства overflow-wrap по-прежнему невысока. Вам лучше использовать word-wrap вместо overflow-wrap, если вы хотите почти универсальную поддержку браузера. Согласно проекту спецификации CSS3, браузеры должны продолжать поддерживать word-wrap.

Если вы хотите управлять переполнением содержимого, вам достаточно использовать overflow-wrap или его устаревшее название word-wrap.

Вы также можете использовать word-break, чтобы разбить слово между двумя символами, если слово выходит за пределы своего контейнера. Как и при overflow-wrap, при использовании word-break нужно действовать осторожно из-за ограничений в поддержке браузера.

Теперь, когда вы знаете поведение, связанное с этими двумя свойствами, вы можете решить, где и когда их использовать.

Автор: Joseph Mawa

Редакция: Команда webformyself.

Что такое text wrap. Смотреть фото Что такое text wrap. Смотреть картинку Что такое text wrap. Картинка про Что такое text wrap. Фото Что такое text wrap

Практический курс по верстке адаптивного сайта с нуля!

Изучите курс и узнайте, как верстать современные сайты на HTML5 и CSS3

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *