Содержание

Укрощаем длинный текст средствами HTML и CSS — Блог

Перенос длинных слов

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

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

Немного иначе ведут себя flexbox элементы и таблицы, они игнорируют установленную ширину и всегда растягиваются настолько, чтобы вместить текст целиком. В примере ниже flex-контейнеру было задано ограничение по ширине (width: 300px;), однако видно, что в зависимости от контента блок может занимать больше места.

Не самая приятная особенность для верстальщика, уверенного, что в его макете всё рассчитано до пикселя.

Перенос слов средствами HTML

Как говорилось выше, по умолчанию браузер не переносит слова на несколько строк. Отчасти потому, что он может не знать, как это сделать грамотно.

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

В HTML5 появился тег <wbr/>

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

<html>
  <head>
    <style>
      .card {
        width: 200px;
        height: 250px;
        background: #7cd4ae;
        padding: 10px;
        display: inline-block;
        margin: 2em;
      }
    </style>
  </head>

  <body>
    <div>
      <img src="troll. jpg">
      Двухсот&shy;восьмидесяти&shy;восьми&shy;киллограммовый тролль
    </div>
    <div>
      <img src="troll.jpg">
      Двухсот<wbr/>восьмидесяти<wbr/>восьми<wbr/>киллограммовый тролль
    </div>
  </body>
</html>

 

 

Перенос слов средствами CSS

В CSS есть несколько свойств, влияющих на перенос текста.

  • overflow-wrap (word-wrap) — управляет переносом длинных слов (normal — не переносить, если перенос не задан явно, break-word — принудительно переносить).
  • word-break — управляет переносом длинных слов (normal — не переносить, если перенос не задан явно, break-all — принудительно переносить, keep-all — не переносить, даже если слово содержит дефис).
  • hyphens — автоматический перенос слов, основанный на встроенном в браузер словаре переносов (none — не переносить, auto — переносить длинные слова).

Название word-wrap является устаревшим, но сохраняется для совместимости со старыми версиями браузеров.

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

Свойство hyphens является наиболее мощным и удобным, но его поддержка браузерами пока не идеальна. Плюс оно требует обязательного указания языка в атрибуте lang тега (например, lang=»ru»).

<html>
  <head>
    <style>
      .description {
        width: 100px;
        background: #7cd4ae;
        word-wrap: break-word;
        word-break: break-all; /* более приоритетно */
      }
    </style>
  </head>

  <body>
    <div lang="ru">
      Верховный суд Лос-Анджелеса решит судьбу огромнейшего трёхсотвосьмидесятикилограммового изумруда
    </div>
  </body>
</html>

 

<h3>Перенос длинных слов</h3> <p>Проблема переноса длинных слов встречается не так редко, как может показаться.

Если не брать во внимание слова-рекордсмены вроде “метилпропенилендигидроксициннаменилакрилической кислоты”, порой в установленные макетом страницы рамки не умещаются менее экзотические слова.</p> <p>Браузеры по умолчанию не разбивают длинные слова на несколько строк. Перенос на новую строку происходит только там, где стоит дефис, пробел или Enter (исключение составляют неразрывный пробел &amp;nbsp; и неразрывный дефис &amp;#8209;). При некоторых условиях может появиться ползунок горизонтальной прокрутки, но чаще всего слово выйдёт за границы отведённого ему блока.</p> <p><img alt=»» src=»/documents/10136/1129663/Article+18+-+1.png/78167a41-190d-4fa6-ad42-94edb58ce6df?t=1546978623888″ /></p> <p>Немного иначе ведут себя flexbox элементы и таблицы, они игнорируют установленную ширину и всегда растягиваются настолько, чтобы вместить текст целиком. В примере ниже flex-контейнеру было задано ограничение по ширине (width: 300px;), однако видно, что в зависимости от контента блок может занимать больше места.
Не самая приятная особенность для верстальщика, уверенного, что в его макете всё рассчитано до пикселя.</p> <p><img alt=»» src=»/documents/10136/1129663/Article+18+-+2.png/00d36fc9-bfa7-45e8-ad39-2ab9012e3abc?t=1546978630901″ /></p> <h4>Перенос слов средствами HTML</h4> <p>Как говорилось выше, по умолчанию браузер не переносит слова на несколько строк. Отчасти потому, что он может не знать, как это сделать грамотно.</p> <p>Указать браузеру, в каких местах слово может быть разбито переносом можно с помощью <strong>символа мягкого разрыва</strong> (<code>&amp;shy;</code>). Переносы будут добавлены только там и тогда, когда это необходимо, чтобы слово поместилось в контейнер.</p> <p>В HTML5 появился тег <strong>&lt;wbr/&gt;</strong>, обладающий схожим эффектом, однако он не добавляет символ переноса в месте разрыва слова, что выглядит уже не так красиво.</p> <pre> &lt;html&gt; &lt;head&gt; &lt;style&gt; .
card { width: 200px; height: 250px; background: #7cd4ae; padding: 10px; display: inline-block; margin: 2em; } &lt;/style&gt; &lt;/head&gt; &lt;body&gt; &lt;div&gt; &lt;img src=»troll.jpg»&gt; Двухсот&amp;shy;восьмидесяти&amp;shy;восьми&amp;shy;киллограммовый тролль &lt;/div&gt; &lt;div&gt; &lt;img src=»troll.jpg»&gt; Двухсот&lt;wbr/&gt;восьмидесяти&lt;wbr/&gt;восьми&lt;wbr/&gt;киллограммовый тролль &lt;/div&gt; &lt;/body&gt; &lt;/html&gt;</pre> <p>&nbsp;</p> <p><img alt=»» src=»/documents/10136/1129663/Article+18+-+3.png/04451e1d-9f02-48c5-8f66-b18ac5d042e8?t=1546979243873″ /></p> <p>&nbsp;</p> <h4>Перенос слов средствами CSS</h4> <p>В CSS есть несколько свойств, влияющих на перенос текста.
</p> <ul> <li>overflow-wrap (word-wrap) — управляет переносом длинных слов (normal — не переносить, если перенос не задан явно, break-word — принудительно переносить).</li> <li>word-break — управляет переносом длинных слов (normal — не переносить, если перенос не задан явно, break-all — принудительно переносить, keep-all — не переносить, даже если слово содержит дефис).</li> <li>hyphens — автоматический перенос слов, основанный на встроенном в браузер словаре переносов (none — не переносить, auto — переносить длинные слова).</li> </ul> <p>Название word-wrap является устаревшим, но сохраняется для совместимости со старыми версиями браузеров.</p> <p>Свойства word-wrap и word-break на первый взгляд делают одно и то же, но есть небольшие отличия. Word-wrap считается более общим, тогда как word-break предусматривает специальное поведение для китайского, японского и корейского языков. Word-wrap начинает не поместившееся слово с новой строки, а word-break нет.
Однако word-break является более приоритетным по отношению к word-wrap.</p> <p>Свойство hyphens является наиболее мощным и удобным, но его поддержка браузерами пока не идеальна. Плюс оно требует обязательного указания языка в атрибуте lang тега (например, lang=»ru»).</p> <pre> &lt;html&gt; &lt;head&gt; &lt;style&gt; .description { width: 100px; background: #7cd4ae; word-wrap: break-word; word-break: break-all; /* более приоритетно */ } &lt;/style&gt; &lt;/head&gt; &lt;body&gt; &lt;div lang=»ru»&gt; Верховный суд Лос-Анджелеса решит судьбу огромнейшего трёхсотвосьмидесятикилограммового изумруда &lt;/div&gt; &lt;/body&gt; &lt;/html&gt;</pre> <p>&nbsp;</p> <p><img alt=»» src=»/documents/10136/1129663/Article+18+-+4.png/eeaafee6-6067-4be4-92db-fd8c5b910a93?t=1546979251721″ /></p> <div><textarea name=»blogs-entry-content-2103008_original»></textarea></div> <script type=»text/javascript»>CKEDITOR.
disableAutoInline=true;CKEDITOR.env.isCompatible=true;</script>

Свойство overflow-wrap- перенос длинного слова на новую строку

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

Синтаксис

селектор { overflow-wrap: break-word | normal; }

Значения

ЗначениеОписание
break-word Заставляет длинные слова переносится на новую строку, если это слово не помещается в контейнер. При этом слово начнется с новой строки.
normal Стандартное поведение: если длинное слово не влазит по ширине в контейнер — оно просто вылезет за его границу (при этом начнется с новой строки).

Значение по умолчанию: normal.

Пример . Значение normal

В данном примере очень длинное слово не поместится в контейнер и вылезет за его границы (при этом начнется с новой строки):

<div> Lorem ipsum dolor sit amet оооооооооооооооооооооооооооооченьдлинноеслово, consectetur adipiscing elit. </div> #elem { word-wrap: normal; overflow-wrap: normal; border: 1px solid red; width: 200px; }

:

Пример . Значение break-word

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

<div> Lorem ipsum dolor sit amet оооооооооооооооооооооооооооооченьдлинноеслово, consectetur adipiscing elit. </div> #elem { overflow-wrap: break-word; border: 1px solid red; width: 200px; }

:

Смотрите также

  • свойство word-break,
    которое также позволяет перенести буквы длинного слова на новую строку
  • свойство word-wrap,
    которое является устаревшим названием свойства overflow-wrap
  • свойство hyphens,
    которое включает переносы слов по слогам
  • тег wbr,
    который реализует мягкие переносы средствами HTML
  • тег br,
    с помощью которого можно принудительно заставить перенести текст на новую строку

Как осуществить с помощью flexbox перенос на новую строку: позиционирование элементов

От автора: вот проблема: если вы хотите создать макет с несколькими строками элементов, как вы можете контролировать во flexbox перенос элементов на новую строку?

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

Распространенным способом управления позиционированием и размером flex-элементов является использование width или flex-basic; если мы установим для четвертого элемента width 100%, он будет расположен в отдельной строке. Но что, если мы не хотим или не можем установить ширину отдельных элементов? Или есть ли способ просто указать flexbox разрыв строки в определенных точках?

Нет никакого свойства, которое мы могли бы установить для flex, чтобы оно переносило элементы на новую строку, но мы можем вставить перенос строки (вы можете представить это, как br) между двумя flex-элементами для достижения чего-то похожего:

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

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

Узнать подробнее

/* Вставка разрыва строки между двумя flex-элементами заставит * flex-элемент, который расположен после него переноситься на новую строку */ .break { flex-basis: 100%; height: 0; }

/* Вставка разрыва строки между двумя flex-элементами заставит

* flex-элемент, который расположен после него переноситься на новую строку */

. break {

  flex-basis: 100%;

  height: 0;

}

<div> <div></div> <div></div> <!— break —> <div></div> </div>

<div>

  <div></div>

  <div></div> <!— break —>

  <div></div>

</div>

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

Обратите внимание , что все примеры кода ниже, требуют и предполагают, что у вас есть контейнер с display: flex и flex-wrap: wrap и flex-элементы добавляются в этот контейнер:

.container { display: flex; flex-wrap: wrap; }

.container {

  display: flex;

  flex-wrap: wrap;

}

<div> <div></div> <div></div> <div></div> . .. </div>

<div>

  <div></div>

  <div></div>

  <div></div>

  …

</div>

Вставка элемента разрыва

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

Давайте начнем с простого примера. Скажем, у нас есть два элемента, отображаемые рядом (они будут растягиваться с помощью flex-grow: 1, и для них не определены ни width, ни flex-basis):

Мы можем вставить элемент разрыва строки между элементами, чтобы они оба заняли 100% доступного пространства:

<div>…</div> <div></div> <!— перенос на новую строку —> <div>…</div>

<div>. ..</div>

<div></div> <!— перенос на новую строку —>

<div>…</div>

Это создает макет с двумя вертикальными элементами полной ширины (я добавил границу к элементу .break, чтобы проиллюстрировать его положение и поведение):

Как это работает? Так как мы указали, что .break должен занимать 100% ширины контейнера (потому что мы установили flex-basis: 100%), flex-элемент переноса должен размещаться в собственном ряду, чтобы достигнуть этого. Он не может размещаться в одном ряду с первым элементом, поэтому перейдет к новой строке, в результате чего первый элемент останется один в одной строке. Первый элемент будет растягиваться, чтобы заполнить оставшееся пространство (так как мы установили flex-grow: 1). Та же логика применима ко второму элементу.

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

<div>. ..</div> <div>…</div> <div>…</div> <div></div> <!— разрыв —> <div>…</div> <div></div> <!— разрыв —> <div>…</div> <div>…</div> <div>…</div>

<div>…</div>

<div>…</div>

<div>…</div>

<div></div> <!— разрыв —>

<div>…</div>

<div></div> <!— разрыв —>

<div>…</div>

<div>…</div>

<div>…</div>

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

Опять же, нам не нужно было указывать ширину ни для одного из этих элементов. Тот же самый метод будет работать для столбцов, если у нас есть гибкий контейнер с flex-direction: column, и установлено значение width 0 (вместо height) для элемента разрыва строки:

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

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

Узнать подробнее

/* Используем столбец разрыва для переноса в новый столбец */ . break-column { flex-basis: 100%; width: 0; }

/* Используем столбец разрыва для переноса в новый столбец */

.break-column {

  flex-basis: 100%;

  width: 0;

}

Такой подход с использованием элементов разрыва для определения макета добавляет некоторое раздутие и шум в HTML, но он может быть мощным инструментом при правильном использовании. Мы можем, например, использовать его для верстки макета кладки с помощью чистого CSS и динамически размещать разрывы с помощью свойства order. Мы также можем перейти к новой строке, не изменяя ширину какого-либо элемента содержимого, и мы можем полагаться исключительно на распределение пространства в макете сетки с помощью flex-grow.

Предположим, что мы хотим создать этот макет:

И предположим, что мы хотим сделать это, задав разные значения flex-grow для распределения пространства (вместо использования flex-basis или width, которые вам придется пересчитывать, когда вы добавляете или удаляете элементы):

. item { flex-grow: 1; } .item-wide { flex-grow: 3; }

.item { flex-grow: 1; }

.item-wide { flex-grow: 3; }

<div></div> <div></div> <div></div>

<div></div>

<div></div>

<div></div>

Если затем мы хотим добавить еще одну строку элементов ниже этой:

Мы не сможем сделать это, не устанавливая flex-basis или width, по крайней мере, для некоторых элементов (или не создавая вложенный макет flexbox с одним flex-элементом для каждой строки). Если все элементы имеют разные значения flex-grow, и ничто не заставляет их переноситься на новую строку, они все просто втиснутся в одну строку:

Неплохо. Однако, если мы вставим элемент разрыва строки, мы можем построить этот макет, распределяя все пространство с помощью flex-grow:

. item { flex-grow: 1; } .item-wide { flex-grow: 3; }

.item { flex-grow: 1; }

.item-wide { flex-grow: 3; }

<div></div> <div></div> <div></div> <div></div> <!— разрыв —> <div></div> <div></div>

<div></div>

<div></div>

<div></div>

<div></div> <!— разрыв —>

<div></div>

<div></div>

Это задает нужный макет, со всеми размерами, определенными пропорционально через flex-grow:

И если будет сценарий, когда нам нужно пять элементов в первой строке, нам не нужно менять какой-либо CSS-код, чтобы это заработало, мы можем просто добавить эти элементы до разрыва строки:

<div></div> <div></div> <div></div> <div></div> <div></div> <div></div> <!— разрыв —> <div></div> <div></div>

<div></div>

<div></div>

<div></div>

<div></div>

<div></div>

<div></div> <!— разрыв —>

<div></div>

<div></div>

Все, что вам нужно добавить в CSS, чтобы использовать элементы разрыва строки — это эти два класса (единственное различие между этими двумя классами состоит в том, что для width (а не для height) необходимо установить 0, чтобы элемент разрывал столбец при использовании в макете столбцов):

/* Использование разрыва строки между двумя flex-элементами заставит * flex-элемент, который расположен после него, перенестись в новую строку */ . break { flex-basis: 100%; height: 0; } /* Используем разрыв столбца, чтобы перенести элемент в новый столбец */ .break-column { flex-basis: 100%; width: 0; }

/* Использование разрыва строки между двумя flex-элементами заставит

* flex-элемент, который расположен после него, перенестись в новую строку */

.break {

  flex-basis: 100%;

  height: 0;

}

 

/* Используем разрыв столбца, чтобы перенести элемент в новый столбец */

.break-column {

  flex-basis: 100%;

  width: 0;

}

Вы, безусловно, может достичь того же или подобного эффекта с помощью вложенных flexbox, когда для каждого ряда будет задан отдельный flexbox, но во многих случаях простое использование flex-basis, width или контента в пределах flex-элементов, вероятно, будет предпочтительным способ управления потоком элементов в макете flexbox. Вставка элементов разрыва является доступной и простой в использовании, она работает, и данная техника обладает некоторыми уникальными характеристиками, которые могут вам пригодиться.

Автор: Tobias Bjerrome Ahlin

Источник: //tobiasahlin.com

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

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

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

Узнать подробнее

PSD to HTML

Практика верстки сайта на CSS Grid с нуля

Смотреть

CSS перенос слов

Всем привет и приступим. Допустим у нас есть следующий текст:

<p>
        Правительство Объединенных Арабских Эмиратов и администрация концентрируют в этом
        городе все самые новые технологии, основанные на последних достижениях науки и техники,
        пытаясь превратить его город будущего, словно сошедший с экрана какого-нибудь
        научно-фантастического фильма.  К этим технологиям можно отнести роботов-полицейских,
        автомобили-роботы и транспортную систему Hyperloop, а в недалеком будущем в Дубайе
        начнет функционировать служба автоматических летающих такси. И в рамках подготовки к
        этому событию электрический двухместный летательный аппарат Volocopter с 18 роторами,
        который и будет использоваться в качестве такси, совершил первый полет в автоматическом
        режиме, пишут...
    </p>

здесь у нас указан некий текст с которым мы сейчас начнем работать.

И первое свойство которое мы с вами рассмотрим называется word-break

word-break: normal | keep-all | break-all

Нас в основном интересуют два значения данного свойства normal — дефолтное значение и break-all с помощью которого мы устанавливаем что перенос слов осуществляется посимвольно. Что касается keep-all, то данное значение служит для переноса слов на китайском, японском и корейском языках.

p{
    word-break: break-all;.
}

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

К счастью есть аналогичное свойство которое переносит только не влезающие слова по символам. Называется оно overflow-wrap:

p{
overflow-wrap: break-word;
}

и после применения значения break-word, весь наш текст переносится по словам, а слова которые не влезают в заданную ширину переносятся посимвольно. Можно сказать задача выполнена! Помимо значения break-word данное свойство принимает:

overflow-wrap: normal | break-word | inherit;

Теперь давайте перейдем к более продвинутому свойству css для переноса слов в тексте.

Рассмотрим свойство white-space c помощью которого мы можем имитировать работу тега pre не меняя сам текст на моноширный.

white-space: normal | nowrap | pre | pre-line | pre-wrap | inherit

По сути с помощью данного свойства мы работает только с пробелами в тексте. К примеру если мы применим следующий стиль к нашему тексту:

white-space: nowrap;

все переносы строк у нас будут проигнорированы и наш текст отобразиться в виде одной строки.

white-space: pre;

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

Если же мы хотим чтобы у нас учитывались не только переносы строк исходного кода, но и пробелы между словами, тогда нужно указать:

white-space: pre-wrap;

Вот в принципе и все что я хотел вам рассказать про переносы слов средствами css. Надеюсь данная статья была для вас полезна и вы не раз еще воспользуетесь полученными знаниями.

Ну а я же с вами прощаюсь. Желаю успехов и удачи! Пока!

Кроссбраузерный способ переноса строки в CSS

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

Как известно, если у вас не настроен перенос строк на сайте, то длинные слова, например: «йцввввввввцйвшщощзвцооооооооооооооооооооооооооооооооооовойщцшовщцйцв» не будут переноситься. Тоже самое касается длинных ссылок, в которых нет тире.

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

Не используйте скрипты. Я не рекомендую использовать скрипты для решения этой проблемы — так как это только нагружает ваш сайт. С другой стороны, у разработчиков всегда есть CSS, в котором всегда найдется решение почти любой проблемы.

Для того, чтобы это исправить, вы можете воспользоваться CSS решением, которое выглядит следующим образом:

.word-break { 
    -ms-word-break: break-all; 
    word-break: break-word; 
    word-wrap: break-word; 

    -webkit-hyphens: auto; 
    -moz-hyphens: auto; 
    hyphens: auto; 
}

Я нашел его тут и мне это очень помогло, так как я не знал как справиться с проблемой переноса строк.

word-break используется для переноса слов. Исключением является CJK (C — Chinise — Китайский, J — Japaneses — Японский  и K — Korean — Корейский) — для этих языков это свойство не работает.

hyphens нужен для того, чтобы установить правила распределения переносов слов.

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

Все что вам нужно сделать — это прописать имя класса — word-break для элемента и все готово!

Для примера выше, я специально сделал демо, которые можно просмотреть ниже.

В демо ниже показано два квадрата, для первого (верхнего) я не использовать класс word-break, о котором я говорил выше, а для второго (нижнего) я его использовал.

На этом все. А что вы используете для своего сайта?

Если у вас есть какие-либо вопросы — то пишите их ниже к этой записи.

2.3. Создание обрывов строк. HTML, XHTML и CSS на 100%

2.3. Создание обрывов строк

С оформлением абзаца все понятно. Что же делать, если возникает необходимость оборвать строку, не закрывая абзац, например в том же эпиграфе для записи стихов?

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

Для переноса текста на новую строку служит элемент BR, он не требует закрывающего тега, однако рекомендуется записывать его открывающий тег как <BR />, чтобы все программы отображали его корректно.

В листинге 2.3 представлен пример кода для принудительного переноса строки.

Листинг 2.3. Обрыв строки

<html>

<head>

<title>Обрыв строки</title>

</head>

<body>

Наша Таня громко плачет,<br />

Уронила в речку мячик.<br />

</body>

</html>

На рис. 2.3 представлен результат обработки браузером кода из листинга 2.3.

Рис. 2.3. Обрыв строки

Из рис. 2.3 видно, что при использовании элемента BR пустая строка после переноса не добавляется.

Есть еще один вариант применения элемента BR. Его используют, когда нужно задать обтекание текстом таблицы, изображения или любого другого плавающего элемента страницы (то есть элемента, для которого задан атрибут align).

Для этого применяют атрибут clear элемента BR. Атрибут может принимать следующие значения:

• all – запрещает обтекание элемента с двух сторон;

• left – запрещает обтекание с левой стороны плавающего объекта, расположенного после элемента BR;

• right – запрещает обтекание с правой стороны плавающего объекта, расположенного после элемента BR;

• none – отменяет свойство.

Если обтекание запрещено, то текст, следующий за элементом BR, будет отображаться на строке после плавающего объекта.

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

Иногда строка может оказаться очень длинной и неудобной для чтения, поэтому внутри элемента NOBR можно использовать элемент WBR, который указывает место для возможного переноса строки.

В листинге 2.4 представлен пример использования элементов NOBR и WBR.

Листинг 2.4. Запрет переноса строки

<html>

<head>

<meta http-equiv=»Content-Type» content=»text/html; charset=windows-1251″ />

<title>Обрыв строки</title>

</head>

<body>

<nobr>Это очень важная строка, ее ни в коем случае нельзя переносить на другую строку, однако в этом месте <wbr>возможно сделать перенос.</nobr>

</body>

</html>

На рис. 2.4 показано отображение в браузере кода из листинга 2.4.

Рис. 2.4. Запрет переносов

Как видно на рис.  2.4, браузер создал горизонтальную полосу прокрутки и перенес строку в том месте, где было разрешено.

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

Данный текст является ознакомительным фрагментом.

Продолжение на ЛитРес

Html запретить перенос строки — Вэб-шпаргалка для интернет предпринимателей!

Труднопереносимыми бывают не только люди, но и слова. К примеру, химическое соединение метилпропенилендигидроксициннаменилакрилическая кислота очень похожа на некоторых людей с « подвывертом »! Не знаем, как справляться с такими трудными личностями, но с переносом слов CSS точно поможет:

Зачем переносить «непереносимое»

В большинстве случаев при отображении текстового содержимого веб-страниц в браузере перенос слов не применяется. Если слово не вмещается целиком в область экрана, то по умолчанию оно полностью « переезжает » на следующую строчку.

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

Решаем проблему переноса слов с помощью HTML

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

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

  • Использование тега — элемент появился в HTML 5 . Он также служит для указания браузеру места для разрыва сложного или длинного слова. Но в отличие от предыдущего спецсимвола этот тег не выводит в месте « разлома » знак переноса, что может негативно сказаться на читаемости всего текста:

Перенос слов средствами CSS

Перед тем, как запретить перенос слов в CSS , давайте рассмотрим несколько свойств, способных разрешить основную проблему:

  1. word-wrap – описывает, как производить перенос слов, которые по длине не помещаются в установленные размеры контейнера. Сразу стоит предупредить, что с валидацией этого свойства возникают проблемы, и с реализацией его поддержки в CSS консорциум W3C еще не определился. Поэтому специализированные валидаторы при наличии word-wrap в коде будут выдавать ошибку:


Тем не менее, это свойство «воспринимается» всеми современными браузерами и является эффективным решением проблемы переноса длинных слов. word-wrap принимает следующие значения:

  • normal – слова не переносятся;
  • break-word – автоматический перенос слов;
  • inherit – наследование значения родителя.

Пример, иллюстрирующий применение этого свойства:


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


Как видно на расположенном выше скриншоте, новое свойство поддерживается Google Chrome , но не поддерживается в IE . Поэтому overflow-wrap лучше не использовать для переноса слов в CSS .

  1. word-break – устанавливает правила переноса строк внутри контейнера, если они не помещаются в него по ширине. Это новое свойство, и его поддержка была реализована в CSS3 . Оно является валидным, но предназначено для работы со строками, поэтому перенос слов может производиться грамматически неправильно.

Свойство принимает три значения:

  • normal – используются правила переноса, установленные по умолчанию;
  • word-break – перенос строк осуществляется автоматически, чтобы слово поместилось в установленные по ширине размеры контейнера;
  • keep-all – отключает автоматический перенос слов в китайском, японском и корейском. Для остальных языков действие значения аналогично normal.

  1. hyphens – новое свойство, которое появилось с выходом CSS3 . Оно устанавливает, как браузер будет осуществлять перенос слов в выводимом тексте. Свойство принимает несколько значений:
  • none – отключает перенос слов в CSS ;
  • manual ( значение по умолчанию ) – слова переносятся в тех участках текстового блока, где это задано с помощью тега или мягкого переноса (­) ;
  • auto – браузер автоматически переносит слова на основе своих настроек.

должен присутствовать атрибут lang со значением «ru» (lang=»ru»).

Свойство поддерживается последними версиями IE , Opera и Firefox . Для каждого из них прописывается своя строчка CSS . Hyphens не поддерживается Google Chrome . Пример:

Запрет переноса слов

Иногда нужно сделать так, чтобы строка отображалась полностью без разрыва. Запрет переноса слов в css можно реализовать несколькими способами:

  • С помощью неразрывного пробела &nbsp , который устанавливается в местах переноса строки или слов;
  • Задав свойству white-space значение « nowrap » ( white-space: nowrap ).


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

Как сделать или запретить перенос строки: HTML код и тег

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

Я расскажу вам о теге br — он делает перенос строки в HTML, то есть разбивает строку на две части — причем делает это принудительно, заканчивая текущую строку в том месте, где был вставлен и перенося ее вторую часть на новый ряд.

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

Все о теге для переноса строки br

Тег br осуществляет одинарный перенос строки в HTML (что это такое описано тут) и определяется всеми браузерами. Да, чуть не забыл — если вы используете тег br, то в отличие от тега абзаца p, у вас не добавляется пустой отступ (перед строкой).

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

Представьте на минуту, что не было бы краткого описания. Что тогда? Тогда пришлось бы каждый раз «закрывать и открывать» перенос строки примерно так:
. Это как минимум неудобно. Но, тем не менее, в строгом XHTML закрывать его обязательно тегом
.

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

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

Ура, второе предложение на новой строке.

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

Ура, второе предложение на новой строке.

Ночь, улица, фонарь, аптека,

Бессмысленный и тусклый свет.

Живи еще хоть четверть века —

Все будет так. Исхода нет.

Умрешь — начнешь опять сначала

И повторится все, как встарь:

Ночь, ледяная рябь канала,

Аптека, улица, фонарь.

Ночь, улица, фонарь, аптека,
Бессмысленный и тусклый свет.
Живи еще хоть четверть века —
Все будет так. Исхода нет.

Умрешь — начнешь опять сначала
И повторится все, как встарь:
Ночь, ледяная рябь канала,
Аптека, улица, фонарь.

Зачем придумали тег br?

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

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

Читайте также: Как сделать пробел в HTML: https://blogwork.ru/probel-v-html/.

Но не стоит злоупотреблять тегом
, чтобы все больше и больше увеличивать расстояние между строками — для этого лучше всего воспользоваться базовыми инструментами HTML+CSS. Недопустимо создание новых абзацев или «как бы абзацев» (это считается плохим подходом) — только перенос строки!

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

Бонус — br clear

А как сделать так чтобы текст, в котором вы поставили перенос строки, не обтекал плавающий элемент (это либо изображение с установленным align, либо элемент со свойством float), а начинался ниже элемента? Для этого можно использовать атрибут clear.

Допустим, у нас есть изображение выровненное по левому краю (align=»left»). Если мы установим
или
, то текст после тега
(следующая строка, которую мы и переносим) будет отображаться как надо, ниже рисунка. Другие значения атрибута clear тега
сделают так, чтобы текст обтекал рисунок, расположившись справа от него.

Использование этого специфичного атрибута не приветствуется спецификацией HTML — такой код будет невалидным.

Кстати, рекомендуем прочесть: Как вставить изображение в HTML.

БОНУС — тег-разделитель hr

Тег тоже одиночный, но, в отличие от
, он используется для создания горизонтального разделителя в виде линии. Более того, внешний вид этой линии мы можем задавать при помощи атрибутов. Но, конечно же, лучше это делать проверенными методами через CSS (что это такое, читайте здесь).

БОНУС — запрет переноса на новую строку с тегом nobr

Бывает и так, что мы хотим запретит перенос строки и избежать перевода на новую строку текста: либо между двумя конкретными словами, либо в целом абзаце. Что делать? Использовать тег . Как выглядит на практике? Вот так:

Что делает тег ? Он говорит браузеру — отображай текст внутри тега без переносов, одной строкой. И, если текст длинный, тогда у нас появится некрасивая и длинная горизонтальная полоса прокрутки, а пользователи должны будут прокрутить текст по горизонтали, чтобы прочитать его полностью.

Как мы понимаем, это очень неудобно. Но тег есть!

Итоги — использование br, nobr, hr, p в HTML

Подводя итог, резюмирую содержание статьи:

— для того чтобы разделять абзацы

  • тег
    — для того чтобы перенести строку внутри абзаца (недопустимо «создание абзацев» при помощи этого тега или злоупотребление им)
  • тег — для создания горизонтальной линии-разделителя
  • тег — для запрета переноса строк в HTML
  • Как запретить перенос текста? | WebReference

    HTML самостоятельно переносит текст на другую строку, если текст целиком не помещается в одну строку. В некоторых случаях, наоборот, требуется запретить перенос слов, к примеру, в пунктах меню или в коде программы, чтобы не «ломать» вёрстку. Для этого используется стилевое свойство white-space со значением nowrap, оно добавляется к нужному элементу с текстом.

    В примере 1 white-space применяется к ссылкам, чтобы текст ссылки не «разбивался» и не переносился на другую строку.

    Пример 1. Использование white-space

    Результат данного примера показан на рис. 1.

    Рис. 1. Меню с запретом переноса текста

    Автор и редакторы

    Автор: Влад Мержевич

    Последнее изменение: 14.11.2018

    Редакторы: Влад Мержевич

    white-space | htmlbook.ru

    Internet ExplorerChromeOperaSafariFirefoxAndroidiOS
    6.0+8.0+1.0+4.0+9.5+1.0+3.0+1.0+3.5+1.0+1.0+
    Краткая информация
    Версии CSS
    CSS 1CSS 2CSS 2. 1CSS 3
    Описание

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

    Результат данного примера показан на рис. 1.

    Рис. 1. Применение свойства white-space

    Объектная модель
    Браузеры

    Браузер Internet Explorer до версии 7.0 включительно не поддерживает значения pre-line, pre-wrap и inherit. Для

    значения normal и pre ведут себя как pre-wrap, а значение nowrap ведет себя как pre-line.

    Opera до версии 9.5 не поддерживает значение pre-line. Для

    значения normal и pre ведут себя как pre-wrap, а значение nowrap ведет себя как pre-line.

    Safari до версии 3.0 и iOS не поддерживают значения pre-wrap и pre-line.

    Firefox до версии 2.0 включительно не поддерживает значения pre-line и pre-wrap. Для

    значения normal, nowrap, и pre воспринимаются как pre-wrap.

    html — Запретить переносы строк

    Stack Overflow на русском

    Начните с этой страницы, чтобы быстро ознакомиться с сайтом

    Подробные ответы на любые возможные вопросы

    Обсудить принципы работы и политику сайта

    Узнать больше о компании Stack Overflow

    Узнать больше о поиске разработчиков или рекламе на сайте

    текущее сообщество

    Как запретить перенос слов CSS?

    Приветствую вас, дорогие друзья!

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

    Дело в том, что по умолчанию в HTML для текста в блоках переносы для слов не заданы, и при уменьшении размеров блока, слова переносятся на новую строку. Но в случае создания сайта на базе CMS, например, WordPress, вы можете столкнуться с тем, что, при адаптации сайта для мобильных устройств, слова будут переноситься посимвольно.

    Делается это, в первую очередь для экономии места, и наилучшего заполнения текстом блока. Но далеко не всегда это удобно и красиво.

    Давайте рассмотрим свойство, которое позволит вам запретить перенос слов CSS при возникновении такой необходимости.

    В случае если у вас при изменении размера блока происходит перестроения текста с переносом отдельных символов на следующую строку, то, скорее всего, в активной теме вашего сайта для всех div применяется CSS-свойство word-break со значением break-all:

    Перенос слов по символьно на новую строку

    Данное свойство задает автоматическую расстановку переносов для наилучшего заполнения блока.

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

    Запрет переноса слов CSS-свойствами

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

    Вероятно, что у стилей, заданных по умолчанию для темы вашего сайта будет больший приоритет, чем для стилей, которые добавляете вы. Из-за чего они не будут срабатывать. В этом случае вам будет полезно ознакомиться с рекомендациями в этой статье: «Почему не работают CSS-стили?»

    Для правильного определения селектора блока, для которого вы собираетесь добавить стили, вы можете воспользоваться рекомендациями из этой статьи: «Как определить ID и класс элемента на странице?»

    Для более безопасного и удобного добавления стилей для вашего сайта, рекомендую использовать программу NotePad++. Инструкцию по ее настройке и использованию вы сможете найти по этой ссылке: «Редактирование файлов сайта в Notepad++»

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

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

    До встречи в следующих статьях!

    С уважением Юлия Гусарь

    Как сделать перенос строки в тексте в HTML?

    Сегодня мы с вами немного коснемся темы оформления текстов на вашем сайте. Создавая сайт и ведя уже существующий, нужно грамотно подходить к каждой его мелочи. Я – активный пользователь Интернета, очень часто ищу различную информацию абсолютно по разным темам. Зачастую встречаю сайты, на которых информация представлена примерно в таком виде:

    Не говоря уже о том, что здесь нет никаких выделений (главного в тексте), так и отсутствуют какие-либо параграфы, или попросту – переносы строк. Текст может быть и корректным с точки зрения орфографии и его темы, но визуально – он некомфортен для восприятия. Согласитесь, такой вид куда более читабельный и не «отпугивает» наших пользователей:

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

    Для наглядности за основу мы возьмем популярный в кругах дизайнеров и верстальщиков текст «Lorem Ipsum», а если быть точнее – то несколько его параграфов:

    и рассмотрим популярные способы переноса строк в HTML.

    Первый вариант переноса строк в HTML

    Первый и, наверное, самый популярный и в то же время специально созданный тег для переноса строк – это:

    Вы могли видеть этот тег и без слэша (косой черты) на конце, разницы в этом особо нет, просто приведенный выше вариант является более валидным (правильным).

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

    Второй вариант переноса строк в HTML

    В HTML существует такое понятие, как параграфы. Для них отведен специальный тег типа:

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

    Здесь стоит отметить то, что использование пустого тега типа:

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

    Или же присвойте параграфу свой идентификатор, за счет которого примените свой персональный стиль:

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

    Третий вариант переноса строк в HTML

    Этот вариант похож на вид параграфов, только вместо тега «p» используется тег «div»:

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

    или же через отдельный идентификатор блока:

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

    Перенос слов CSS (свойства overflow-wrap, word-wrap, word-break, hyphens) — Примеры

    Указанные ниже свойства CSS определяют как переносить длинные слова:

    1. только там, где стоит чёрточка, пробел или Enter (искл., неразрывный пробел и неразрывный дефис ‑ ). Между частями одного слова пишется дефис (например, красно‐жёлтый), между словами — тире. «Мягкий дефис» ­ проявляется только при необходимости переноса. Если слово выходит за рамки родителя, то или ​ переносит его часть без чёрточки. В математических выражениях используется минус (например, 5 − 2). В номерах телефонов отображается цифровая чёрта (например, +7 800 000‒00‒00). И всё это не является той знакомой -, что есть на клавиатуре.
    2. после любого символа.
    3. согласно правилам русского языка с автоматическим применением дефиса.
    В чём состоит различие одно свойства от другого

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

    Для того, чтобы игнорировались черточки, сразу видимые глазу, вносим word-break: keep-all; .

    Для того, чтобы браузер не обращал внимания и на мягкий дефис, вставляем hyphens: none; .

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

    При совместном использовании word-break: break-all; с hyphens: auto; , последнее игнорируется. hyphens: auto; расставляет любые дефисы по своему усмотрению. Но для того, чтобы оно работало, нужно обозначить свой язык, указав в div атрибут lang=»ru» .

    Не переносить слова на другую строку

    Скажем, пункт меню или кнопка будут нехорошо выглядеть, если разъедутся на части. Поэтому надо запретить их разделение. Для чего все вышеуказанные свойства следует поставить в режим «по умолчанию» и добавить white-space: pre; или white-space: nowrap;. Нажмите на white-space: nowrap; и посмотрите на наш полигон.

    Internet ExplorerChromeOperaSafariFirefoxAndroidiOS
    6.0+8.0+1.0+4.0+9.5+1.0+3.0+1.0+3.5+1.0+1.0+

    Краткая информация

    Значение по умолчаниюnormal
    НаследуетсяДа
    ПрименяетсяК блочным элементам
    Ссылка на спецификациюhttp://www.w3.org/TR/CSS21/text.html#propdef-white-space

    Версии CSS

    CSS 1CSS 2CSS 2. 1CSS 3

    Описание

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

    Результат данного примера показан на рис. 1.

    Рис. 1. Применение свойства white-space

    Объектная модель

    [window.]document.getElementBy >elementID «).style.whiteSpace

    Браузеры

    Браузер Internet Explorer до версии 7.0 включительно не поддерживает значения pre-line , pre-wrap и inherit . Для

    значения normal и pre ведут себя как pre-wrap , а значение nowrap ведет себя как pre-line .

    Opera до версии 9.5 не поддерживает значение pre-line . Для

    значения normal и pre ведут себя как pre-wrap , а значение nowrap ведет себя как pre-line .

    Safari до версии 3.0 и iOS не поддерживают значения pre-wrap и pre-line .

    Firefox до версии 2.0 включительно не поддерживает значения pre-line и pre-wrap . Для

    значения normal , nowrap , и pre воспринимаются как pre-wrap .

    Рекомендуем к прочтению

    разрыв строки — CSS: каскадные таблицы стилей

    Свойство line-break CSS устанавливает, как разбивать строки китайского, японского или корейского (CJK) текста при работе с пунктуацией и символами.

     
    разрыв строки: авто;
    разрыв строки: свободный;
    разрыв строки: нормальный;
    разрыв строки: строгий;
    разрыв строки: где угодно;
    
    
    разрыв строки: наследовать;
    разрыв строки: начальный;
    разрыв строки: не задано;
      

    Значения

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

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

      авто | свободный | нормальный | строгий | в любом месте  

    Настройка переноса текста

    Посмотрите, переносится ли текст перед «々», «ぁ» и «。».

    HTML
      

    авто:
    そ こ は 湖 の ほ と り 々 が 輝 い て い た
    そ の 景色 に 、 美 し い な ぁ と 思 わ ず つ ぶ や い た。

    свободно:
    そ こ は 湖 の ほ と り 々 が 輝 い て い た
    そ の 景色 に 、 美 し い な と 思 わ ず つ ぶ い た。

    нормальный:
    そ こ は 湖 の ほ と り 々 が 輝 い て い た
    の 景色 に 、 美 し い な と 思 わ ず つ ぶ や い た。

    строгий:
    そ こ は 湖 の ほ と り 々 が 輝 い て い た
    の 景色 に 、 美 し な と 思 わ ず つ ぶ い た。

    в любом месте:
    そ こ は 湖 の ほ と り 々 が 輝 い て い た。
    の 景色 に 、 美 し い ぁ 思 わ ず つ ぶ い た。

    CSS
     . wrapbox {width: 10em; маржа: 0.5em; пробел: нормальный; вертикальное выравнивание: сверху; дисплей: встроенный блок; }
    .auto {разрыв строки: авто; }
    .loose {разрыв строки: свободный; }
    .normal {разрыв строки: нормальный; }
    .strict {разрыв строки: строгий; }
    .anywhere {разрыв строки: где угодно; }
      
    Результат

    Таблицы BCD загружаются только в браузере

    CSS свойство разрыва слова



    Определение и использование

    Свойство разрыв слова определяет, как слова должен сломаться при достижении конца строки.

    Значение по умолчанию: нормальный
    Унаследовано: да
    Анимация: нет. Читать о animatable
    Версия: CSS3
    Синтаксис JavaScript: объект .style.wordBreak = «взломать все» Попытайся

    Поддержка браузера

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

    Имущество
    разрыв слов 4,0 5,5 15,0 3,1 15,0

    Синтаксис CSS

    слово-разрыв: нормальный | разрыв-все | сохранить-все | разрыв-слово | начальный | наследование;

    Стоимость недвижимости

    .
    Значение Описание
    нормальный Значение по умолчанию.Использует правила разрыва строки по умолчанию
    обкатка Для предотвращения переполнения слово может быть разбито на любой символ
    хранить все Разрывы слов не следует использовать для текста на китайском / японском / корейском (CJK) языке. Поведение текста, отличного от CJK, такое же, как и у значения «normal»
    разрывное слово Для предотвращения переполнения слово может быть разбито в произвольных точках
    начальный Устанавливает для этого свойства значение по умолчанию.Читать про начальный
    наследовать Наследует это свойство от своего родительского элемента. Читать про наследство

    html — Как перенести строку с CSS без использования?

    Другие ответы предоставляют несколько хороших способов добавления разрывов строк в зависимости от ситуации. Но следует отметить, что селектор : after является одним из лучших способов сделать это для CSS-контроля над списками ссылок (и подобных вещей) по причинам, указанным ниже.

    Вот пример, предполагающий оглавление:

      
    
    
         Элемент A1   Элемент A2 
         Элемент B1   Элемент B2 
    
      

    А вот метод Simon_Weaver, который проще и совместимее. Он не так сильно разделяет стиль и контент, требует больше кода, и могут быть случаи, когда вы захотите добавить перерывы постфактум.Тем не менее, отличное решение, особенно для более старого IE.

      
    
    
         Элемент A1  
    Элемент A2
    Элемент B1
    Элемент B2

    Обратите внимание на преимущества вышеуказанных решений:

    • Независимо от пробелов в HTML, результат будет одинаковым (vs. до )
    • К элементам не добавляется никаких дополнительных отступов (см. Дисплей NickG : блок комментариев)
    • Вы можете легко переключаться между горизонтальным и вертикальным списками ссылок с помощью некоторого общего CSS, не заходя в каждый файл HTML для изменения стиля
    • Нет float или Очистить стилей, влияющих на окружающий контент
    • Стиль отделен от содержимого (по сравнению с
      или до с жестко заданными разрывами)
    • Это также может работать для свободных ссылок с использованием a. toc: после и
    • Вы можете добавить несколько разрывов и даже текст префикса / суффикса

    Как вставить разрыв строки перед элементом с помощью CSS?

    Как вставить разрыв строки перед элементом с помощью CSS?

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

    Разрыв строки между строками: Разрыв строки может быть добавлен между строками текста.Пробел: предварительная строка; используется для вставки разрыва строки перед элементом.

    Пример 1:

    < HTML >

    < голова >

    < титул >

    Вставить разрыв строки

    перед элементом

    титул >

    < стиль >

    п {

    цвет: зеленый;

    пробел: предварительная строка;

    }

    стиль >

    головка >

    < корпус >

    < h2 > GeeksforGeeks h2 >

    < h3 >

    Вставить разрыв строки перед

    элемент

    h3 >

    < p >

    Структура данных

    Алгоритм

    Компьютерные сети

    Веб-технологии

    p >

    корпус >

    html >

    Выход:

    Разрыв строки между элементами HTML: Разрыв строки между элементами HTML может быть добавлен с помощью свойств CSS. Есть два метода заставить встроенные элементы добавлять новую строку.



    • Использование свойства display: Элемент уровня блока начинается с новой строки и занимает всю доступную ему ширину.
    • Использование символа возврата каретки (\ A): Мы можем добавить новую строку, используя псевдоэлементы :: before или :: after.

    Пример 2:

    < HTML >

    < голова >

    < титул >

    Вставить разрыв строки и содержание

    перед элементом

    титул >

    < стиль >

    p :: до {

    цвет: зеленый;

    содержание: "GeeksforGeeks \ A"

    «Портал информатики»;

    дисплей: блок;

    пробел: предварительно;

    }

    стиль >

    головка >

    < корпус >

    < h2 > GeeksforGeeks h2 >

    < h3 >

    Вставить содержимое и разрыв строки

    перед элементом

    h3 >

    < p > Структура данных p >

    < p > Алгоритм p >

    корпус >

    html >

    Выход:

    Пример 3: В этом примере используется символ возврата каретки «\ A» для добавления разрыва строки перед элементом.

    < HTML >

    < голова >

    < титул >

    Вставить разрыв строки

    перед элементом

    титул >

    < стиль >

    p :: до {

    содержание: «\ A»;

    пробел: предварительно;

    }

    стиль >

    головка >

    < корпус >

    < h2 > GeeksforGeeks h2 >

    < h3 >

    Вставить разрыв строки

    перед элементом

    h3 >

    < p > Структура данных p >

    < p > Алгоритм p >

    < p > Операционная система p >

    корпус >

    html >

    Выход:

    Форсирование новой строки / разрыва строки с использованием только CSS

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

    Разрыв строки между строками текста

    Мы можем отображать разрывы строк в тексте без добавления какой-либо дополнительной разметки, используя свойство CSS white-space с любым из следующих значений:

    белое пространство: Новые строки Пробелы и табуляции Перенос текста
    до Заповедник Заповедник Без упаковки
    предварительная упаковка Заповедник Заповедник Обертка
    предварительная версия Заповедник Свернуть Обертка

    Использование любого из этих свойств заставит элемент действовать как элемент

      (который сохраняет символы новой строки), например:
    

    р {пробел: перед строкой; }
     
    
    

    Lorem ipsum dolor sit amet. Consectetur adipiscing elit. Mauris eget pellentesque lacus.

    Это не работает в IE-7 и ниже.

    Разрыв строки между элементами HTML

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

    1. Установить

      дисплей: блок; по стихии:

      Это может быть наиболее очевидным; элемент уровня блока начинается с новой строки и занимает всю доступную ему ширину.Итак, вы можете использовать элемент уровня блока или установить для любого свойства CSS элемента HTML значение display: block .

    2. Использовать символ возврата каретки (

      \ A ) как содержимое в псевдоэлементе:

      Вы можете добавить новую строку, используя псевдоэлементы :: before или :: after , например:

      промежуток :: перед {содержанием: '\ A'; белое пространство: предварительно; }
       
      
      

      Lorem ipsum dolor sit amet. Consectetur adipiscing elit.

      Свойство white-space в этом случае важно для того, чтобы это работало. Также обратите внимание, что установка display: inline-block сохранит текст в той же строке. Чтобы это работало, свойство display должно быть установлено на inline .


    Надеюсь, этот пост был вам полезен. Он был опубликован (и последняя редакция ).Пожалуйста, покажите свою любовь и поддержку, поделившись этим постом.

    Как предотвратить разрыв строки с помощью CSS

    Введение

    Разработчики обычно любят переносить текст на веб-страницу. Обтекание тем или иным образом ограничивает текст и предотвращает проблемы с дизайном. Перенос текста также может предотвратить горизонтальную прокрутку. Но бывают случаи, когда вы хотите, чтобы блоки текста оставались на одной строке независимо от длины. Вы можете предотвратить разрывы строк и перенос текста для определенных элементов, используя свойство CSS white-space .

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

    Медузафиш-полосатая морская собачка, сайра, белуга, белуга. Индийский Mul mora cisco masu, лосось, петух-реквием, длинноносая, ланцетная рыба, синяя рыба, красный окунь, колючий гигант Данио Сакраменто.

    Медузафиш-полосатая морская собачка, сайра, белуга, белуга. Индийский Mul mora cisco masu, лосось, петух-реквием, длинноносая, ланцетная рыба, синяя рыба, красный окунь, колючий гигант Данио Сакраменто.

    Медузафиш-полосатая морская собачка, сайра, белуга, белуга. Индийский Mul mora cisco masu, лосось, петух-реквием, длинноносая, ланцетная рыба, синяя рыба, красный окунь, колючий гигант Данио Сакраменто.

    Медузафиш-полосатая морская собачка, сайра, белуга, белуга. Индийский лосось Mul mora cisco masu, петушиная акула-реквием, длинноносая, ланцетная рыба, синяя рыба, красный окунь Сакраменто, двустворчатый гигантский данио.

    Это предоставит вам несколько вариантов переноса или отсутствия переноса текста.

    Предварительные требования

    Для выполнения этого урока вам потребуется:

    Шаг 1 - Предотвращение и принудительное разрывы строк в CSS

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

    Сначала создайте и откройте новый файл с именем main.css , используя nano или ваш предпочтительный редактор:

      

    Добавьте следующий контент, который представит три класса CSS, которые используют несколько свойств, включая пробел :

    . /main.css

      .sammy-wrap {
        радиус границы: 6 пикселей;
        цвет фона: синий;
        граница: 2 пикселя серого цвета;
        максимальная ширина: 70%;
        заполнение: 1em;
        нижнее поле: .4em;
    }
    .sammy-nowrap-1 {
        радиус границы: 6 пикселей;
        цвет фона: синий;
        граница: 2px серая пунктирная линия;
        максимальная ширина: 70%;
        заполнение: 1em;
        нижнее поле: .4em;
        белое пространство: nowrap;
    }
    .sammy-nowrap-2 {
        радиус границы: 6 пикселей;
        цвет фона: голубой;
        граница: 2 пикселя серого цвета;
        максимальная ширина: 70%;
        заполнение: 1em;
        нижнее поле:.4em;
        белое пространство: nowrap;
        переполнение: скрыто;
        переполнение текста: многоточие;
    }
      

    Ваш первый урок - .sammy-wrap . Он определяет шесть общих свойств CSS, включая border-radius , background-color , border max-width , padding и margin-bottom . Этот класс создаст визуальный блок, но не определяет никаких специальных свойств оболочки. Это означает, что он будет разрывать строки по умолчанию.

    Ваш второй класс - .Самми-Новрап-1 . Он определяет тот же блок, что и .sammy-wrap , но теперь вы добавляете еще одно свойство: white-space . Свойство white-space имеет множество параметров, каждый из которых определяет, как обрабатывать пустое пространство внутри данного элемента. Здесь вы установили white-space на nowrap , что предотвратит все разрывы строк.

    Ваш третий класс - .sammy-nowrap-2 . Он добавляет пробелов и два дополнительных свойства: overflow и text-overflow .Свойство overflow обрабатывает прокручиваемое переполнение , которое происходит, когда содержимое внутри элемента выходит за границы этого элемента. Свойство overflow может сделать это содержимое прокручиваемым, видимым или скрытым. Вы устанавливаете overflow на hidden , а затем используете свойство text-overflow , чтобы добавить еще больше настроек. text-overflow может помочь вам сигнализировать пользователю, что дополнительный текст остается скрытым. Вы установили это значение , многоточие , поэтому теперь ваша линия не будет ни разрываться, ни выходить за пределы рамки.CSS скроет переполнение и сигнализирует о скрытом содержимом с помощью ... .

    Сохраните и закройте файл.

    Теперь, когда у вас есть таблица стилей, вы готовы создать короткий HTML-файл с образцом текста. Затем вы загрузите веб-страницу в браузер и проверите, как CSS может предотвратить разрывы строк.

    Шаг 2 - Создание файла HTML

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

    Создайте и откройте файл с именем index.html в предпочитаемом вами редакторе. Обязательно поместите его в ту же папку, что и main.css :

    .
      

    Добавьте следующий контент, который свяжет main.css как вашу таблицу стилей , а затем примените ваши классы к образцу текстового блока:

    ./index.html

      
    
    
    
     Как предотвратить разрыв строки с помощью CSS 
    
    
    
    
    

    Медузафишский полосатый киллиф, каторжник, сайра, белуга, осетр. Индийский лосось Mul mora cisco masu, петушиная рыба-реквием, длинноносая ланцетная рыба, синяя рыба, красный окунь Sacramento, двустворчатый гигантский данио

    Медузафишская полосатая киллифиш, каторжник, сайра, белуха, белуга, осетр. Индийский Mul mora cisco masu, лосось, петух-реквием, длинноносая, ланцетная рыба, синяя рыба, красный окунь, колючий гигант Данио Сакраменто.

    Медузафишская полосатая киллифиш, каторжник, сайра, белуха, белуга, осетр. Индийский лосось Mul mora cisco masu, петушиная рыба-реквием, длинноносая ланцетная рыба, синяя рыба, красный окунь Sacramento, двустворчатый гигантский данио

    <Р> Medusafish & NBSP; ленточный & NBSP; Killifish & NBSP; арестант & NBSP; собачка & NBSP; сайра & NBSP; threadsail & NBSP; белуха & NBSP;. Осетровые рыбы & NBSP; Индийские & NBSP; мул & NBSP; мор & NBSP; сиг & NBSP; Мас & NBSP; лосось, & NBSP; roosterfish & NBSP; реквием & NBSP; акулы & NBSP; Нос & NBSP; lancetfish & NBSP; луфаря & NBSP; красный & NBSP ; луциан & nbsp; Sacramento & nbsp; двустворчатый & nbsp; гигантский & nbsp; данио.

    Вы назначили свой стандартный стиль обтекания первому текстовому блоку, стиль nowrap второму и nowrap , то есть скрытый с многоточием третьему. Вы назначили sammy-wrap четвертому образцу, но вы переопределяете упаковку по умолчанию, вставляя неразрывные пробелы ( & nbsp; ) непосредственно в HTML. Если вам нужно предотвратить перенос строки как разовую ситуацию, неразрывные пробелы могут обеспечить быстрое решение.

    Откройте index.html в веб-браузере и просмотрите свои результаты. Ваши четыре текстовых блока будут выглядеть так:

    Медузафиш-полосатая морская собачка, сайра, белуга, белуга. Индийский Mul mora cisco masu, лосось, петух-реквием, длинноносая, ланцетная рыба, синяя рыба, красный окунь, колючий гигант Данио Сакраменто.

    Медузафиш-полосатая морская собачка, сайра, белуга, белуга. Индийский Mul mora cisco masu, лосось, петух-реквием, длинноносая, ланцетная рыба, синяя рыба, красный окунь, колючий гигант Данио Сакраменто.

    Медузафиш-полосатая морская собачка, сайра, белуга, белуга. Индийский Mul mora cisco masu, лосось, петух-реквием, длинноносая, ланцетная рыба, синяя рыба, красный окунь, колючий гигант Данио Сакраменто.

    Медузафиш-полосатая морская собачка, сайра, белуга, белуга. Индийский лосось Mul mora cisco masu, петушиная акула-реквием, длинноносая, ланцетная рыба, синяя рыба, красный окунь Сакраменто, двустворчатый гигантский данио.

    Вы успешно настроили свои свойства CSS, чтобы предотвратить или разрешить разрывы строк в четырех различных стилях.

    Заключение

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

    Добавляйте разрывы и строки в свой контент - создавайте свои первые веб-страницы с помощью HTML и CSS

    https://vimeo.com/270702335

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

    Есть простые способы разбить структуру вашей страницы, чтобы разделить темы или идеи без создания классов или идентификаторов.

    Для этого можно использовать разрывы строк или горизонтальные линейки (т. Е. Линии)!

    Допустим, вы хотите закодировать статью о лучших кофейнях Нью-Йорка по районам и хотите, чтобы она была структурирована следующим образом:

    Интернет-статья о кафе Нью-Йорка

    Обратите внимание на две вещи:

    Это то, что мы обложку в этой главе.

    Разрывы строк

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

    Видите промежуток между «строкой 1» и «строкой 2» на следующем изображении? Это пространство автоматически добавляется к элементу HTML (с помощью CSS):

    Строка по умолчанию, которая появляется между абзацами

    Иногда вам не нужно это дополнительное пространство. Вам потребуется меньше места между каждой строкой:

    Меньше места между двумя разными строками

    Это особенно верно для адресов и стихов.Вам не нужен совершенно новый абзац для каждой строки адреса! Подойдет простой и более узкий разрыв строки.

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

       

    Поместье Тоби

    125 N 6-я улица
    Бруклин, Нью-Йорк, 11249

    В приведенном выше коде будет разрыв строки между «125 N 6th St» и «Brooklyn, NY 11249», который не будет иметь чрезмерно большого пространства, которое появляется между двумя элементами абзаца.Это будет просто хороший разрыв строки!

    Адреса с разрывами для разделения строк

    Вот как бы адрес выглядел как два отдельных элемента

    вместо одного абзаца, содержащего разрыв строки:

    Адрес со строками как отдельными абзацами: странный вид

    Это странное количество места, верно? Это также не имеет смысла семантически, потому что адрес - это одна единица, поэтому разделять его на несколько абзацев нецелесообразно.

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

    Горизонтальные правила

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

    Чтобы создать линию или «горизонтальную линейку» в HTML, просто используйте тег


    .

       

    Манхэттен

    ...
    ...

    Brooklyn

    Horizontal rule

    Вот полный HTML-код статьи coffeeshop (найдите эти
    и


    теги!):

      

    Лучшие кофейни Нью-Йорка

    В Нью-Йорке есть отличные кофейни.Не пропустите горячие новые адреса, открывающиеся направо и налево!

    Манхэттен

    Боб

    824 Broadway
    Нью-Йорк, NY 10003

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

    Третий рельс

    Салливан, 240
    Нью-Йорк, NY 10012

    Кофе и пончики! Что еще нужно?

    Black Fox Coffee Co.

    70 Pine St
    Нью-Йорк, NY 10270

    У Black Fox невероятный выбор фасоли и вкусных закусок.

    Стамптаун

    18 W 29-я улица
    Нью-Йорк, NY 10001

    Нужно ли это вообще объяснять?


    Бруклин

    Поместье Тоби

    125 N 6-я улица
    Бруклин, Нью-Йорк, 11249

    Toby's значительно вырос по сравнению с первоначальным местоположением в Бруклине.Теперь у них три офиса в Нью-Йорке.

    Практика!

    Перейдите к упражнению CodePen. Вы добавите новый раздел для квартала Квинс, используя горизонтальную линейку. Вы добавите одну кофейню в Queens (реальную или воображаемую), убедившись, что в ее адресе используется разрыв строки.

    1. Добавьте горизонтальную линейку (


      ) под разделом Бруклин.

    2. Создайте заголовок (

      ) для Королев под горизонтальной линейкой.

    3. Создайте фальшивую кофейню (имя и адрес) и добавьте ее в новый раздел района Квинс. Не стесняйтесь точно имитировать код для предыдущих кофешопов, чтобы применить те же стили CSS.

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

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