Установка максимальной длины символа в css

Я делаю отзывчивый веб-сайт для школы, и мой вопрос:

Как установить максимальную длину символов предложений (с помощью css) на моем веб-сайте (например, 75 символов), когда у меня очень большой экран, предложения не будут содержать более 75 символов.

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

Ответ 1

Вы всегда можете использовать метод truncate, установив max-width и overflow ellipsis как этот

p {
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  max-width: 200px;
}

Пример: http://jsfiddle.net/3czeyznf/

Для многострочного усечения посмотрите на решение flex. Пример с усечением на 3 строки.

p {
  overflow: hidden;
  display: -webkit-box;
  -webkit-line-clamp: 3;
  -webkit-box-orient: vertical;
}

Пример: https://codepen.io/srekoble/pen/EgmyxV

Ответ 2

"Значение длины CSS" ch.

Из MDN

Этот блок представляет ширину или, точнее, предварительную меру, от глифа '0' (ноль, символ Unicode U + 0030) в элементе шрифт.

Это может приблизиться к тому, что вы после.

p {
  overflow: hidden;
  max-width: 75ch;
}
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Deserunt rem odit quis quaerat. In dolorem praesentium velit ea esse consequuntur cum fugit sequi voluptas ut possimus voluptatibus deserunt nisi eveniet!Lorem ipsum dolor sit amet, consectetur
  adipisicing elit. Dolorem voluptates vel dolorum autem ex repudiandae iste quasi. Minima explicabo qui necessitatibus porro nihil aliquid deleniti ullam repudiandae dolores corrupti eaque.</p>

Ответ 3

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

p {
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    max-width: 75ch;
}
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin nisi ligula, dapibus a volutpat sit amet, mattis etc. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin nisi ligula, dapibus a volutpat sit amet, mattis etc.</p>

Ответ 4

пример кода:

.limited-text{
    white-space: nowrap;
    width: 400px;
    overflow: hidden;
    text-overflow: ellipsis;
}
<p class="limited-text">Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ut odio temporibus voluptas error distinctio hic quae corrupti vero doloribus optio! Inventore ex quaerat modi blanditiis soluta maiores illum, ab velit.</p>

    

Ответ 5

В Chrome вы можете установить число отображаемых строк с помощью-webkit-line-зажим":

     display: -webkit-box;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: 3;  /* Number of lines displayed before it truncate */
     overflow: hidden;

Так что для меня это использовать в расширении, так что это идеально, больше информации здесь: https://medium.com/mofed/css-line-clamp-the-good-the-bad-and-the-straight-up-broken-865413f16e5

Ответ 6

Это невозможно с помощью CSS, вам придется использовать Javascript для этого. Хотя вы можете установить ширину p до 30 символов, и последующие буквы автоматически опустится, но опять же это будет не так точно и будет меняться, если символы находятся в капитале.

Ответ 7

HTML

<div id="dash">
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin nisi ligula, dapibus a volutpat sit amet, mattis et dui. Nunc porttitor accumsan orci id luctus. Phasellus ipsum metus, tincidunt non rhoncus id, dictum a lectus. Nam sed ipsum a urna ac
quam.</p>
</div>

JQuery

var p = $('#dash p');
var ks = $('#dash').height();
while ($(p).outerHeight() > ks) {
  $(p).text(function(index, text) {
    return text.replace(/\W*\s(\S)*$/, '...');
  });
}

CSS

#dash {
  width: 400px;
  height: 60px;
  overflow: hidden;
}

#dash p {
  padding: 10px;
  margin: 0;
}

РЕЗУЛЬТАТ

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin nisi ligula, dapibus a volutpat sit amet, mattis et...

Jsfiddle

Ответ 8

Чистое решение CSS для усечения многострочных символов

У меня была похожая проблема, и я нашел это превосходное решение только для CSS от Hackingui.com. Вы можете прочитать статью для информации, но ниже приведен основной код.

Я проверил это, и он работает отлично. Надеюсь, кто-то найдет это полезным, прежде чем выбрать JS или опции на стороне сервера

  /* styles for '...' */ 
.block-with-text {
  /* hide text if it more than N lines  */
  overflow: hidden;
  /* for set '...' in absolute position */
  position: relative; 
  /* use this value to count block height */
  line-height: 1.2em;
  /* max-height = line-height (1.2) * lines max number (3) */
  max-height: 3.6em; 
  /* fix problem when last visible word does not adjoin right side  */
  text-align: justify;  
  /* place for '...' */
  margin-right: -1em;
  padding-right: 1em;
}

/* create the ... */
.block-with-text:before {
  /* points in the end */
  content: '...';
  /* absolute position */
  position: absolute;
  /* set position to right bottom corner of block */
  right: 0;
  bottom: 0;
}

/* hide ... if we have text, which is less than or equal to max lines */
.block-with-text:after {
  /* points in the end */
  content: '';
  /* absolute position */
  position: absolute;
  /* set position to right bottom corner of text */
  right: 0;
  /* set width and height */
  width: 1em;
  height: 1em;
  margin-top: 0.2em;
  /* bg color = bg color under block */
  background: white;
}

Ответ 9

Попробуйте мое решение двумя разными способами.

<div class="wrapper">
      <p class="demo-1">Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ut odio temporibus voluptas error distinctio hic quae corrupti vero doloribus optio! Inventore ex quaerat modi blanditiis soluta maiores illum, ab velit.</p>
</div>

<div class="wrapper">
  <p class="demo-2">Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ut odio temporibus voluptas error distinctio hic quae corrupti vero doloribus optio! Inventore ex quaerat modi blanditiis soluta maiores illum, ab velit.</p>
</div>

.wrapper {
  padding: 20px;
  background: #eaeaea;
  max-width: 400px;
  margin: 50px auto;
}

.demo-1 {
  overflow: hidden;
  display: -webkit-box;
  -webkit-line-clamp: 3;
  -webkit-box-orient: vertical;
}

.demo-2 {
  overflow: hidden;
  white-space: nowrap;
  text-overflow: ellipsis;
  max-width: 150px;
}

Ответ 10

Современный CSS Grid Ответ

Просмотрите полностью рабочий код на CodePen. Учитывая следующий HTML:

<div class="container">
    <p>Several paragraphs of text...</p>
</div>

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

.container
{
  display: grid;
  grid-template-columns: 1fr, 70ch 1fr;
}

p {
  grid-column: 2 / 3;
}

Вот как это выглядит (см. CodePen для полностью работающего примера):

enter image description here

Вот еще один пример, где вы можете использовать minmax для установки диапазона значений. На маленьких экранах ширина будет составлять 50 символов, а на больших экранах - 70 символов.

.container
{
  display: grid;
  grid-template-columns: 1fr minmax(50ch, 70ch) 1fr;
}

p {
  grid-column: 2 / 3;
}