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

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

Принудительный запрет переноса:

p { white-space:nowrap; }

Автоматический перенос:

p { word-wrap:break-word; }

Принудительный разрыв английских слов:

p { word-break:break-all; }

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

Переполнение показывает многоточие:

p{text-overflow:ellipsis;overflow:hidden;}
white-space: normal|pre|nowrap|pre-wrap|pre-line|inherit; 
  • white-space: Свойство задает, как обрабатывать пробельные символы внутри элемента.
  • normal: По умолчанию. Пробелы игнорируются браузером.
  • pre: Пробельные символы сохраняются браузером. Такое поведение похоже на тег pre в HTML.
  • nowrap: Текст не переносится; он продолжается на той же строке, пока не встретит тег br.
  • pre-wrap: Сохраняет последовательность пробельных символов, но переносит строки обычным образом.
  • pre-line: Схлопывает последовательности пробельных символов, но сохраняет символы новой строки.
  • inherit: Указывает, что значение свойства white-space должно наследоваться от родительского элемента.
word-wrap: normal|break-word; 
  • word-wrap: Свойство используется для указания, разрешено ли браузеру разрывать слова внутри слова. Это делается, чтобы предотвратить переполнение, когда строка слишком длинная и не имеет естественной точки разрыва.
  • normal: Переносить строки только в разрешённых точках разрыва (браузер сохраняет обработку по умолчанию).
  • break-word: Разрывать строки внутри длинных слов или URL-адресов.
word-break: normal|break-all|keep-all;
  • Свойство word-break используется для указания, как разрывать слова внутри слова.
  • normal: Использует правила переноса строк браузера по умолчанию.
  • break-all: Разрешает перенос строк внутри слов.
  • keep-all: Можно переносить только по пробелам половинной ширины или дефисам.

Пример

<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Пример учебного руководства (example.com)</title> <style>.word{background:#E4F2FF;width:250px;margin:50px auto;padding:20px;font-family:"microsoft yahei";} /* Принудительно без переноса */ .nowrap{white-space:nowrap;} /* Разрешить разрыв внутри слов. Сначала он попытается перенести на следующую строку, проверить, достаточно ли широка следующая строка, если нет — разорвать внутри слова. */ .breakword{word-wrap: break-word;} /* При разрыве длинные слова не переносятся на следующую строку, а сразу разрываются внутри слова. */ .breakAll{word-break:break-all;} /* Переполненная часть отображается многоточием */ .ellipsis{text-overflow:ellipsis;overflow:hidden;}</style> </head> <body> <div class = "word"> <p class = "nowrap">wordwrap:breakword;absavhsafhuafdfbjhfvsalguvfaihuivfs</p> <p class = "breakword">wordwrap:break-word;absavhsafhuafdfbjhfvsalguvfaihui</p> <p class = "breakAll">wordwrap:break-word;absavhsafhuafdfbjhfvsalguvfaihuivf</p> <p class = "normal">wordwrap:breakword;absavhsafhuafdfbjhfvsalguvfaihuivfsa</p> <p class = "ellipsis">wordwrap:breakword;absavhsafhuafdfbjhfvsalguvfaihuivfsab</p> </div> </body> </html>

Попробуйте сами »