Сохранить номер ол с переполнением - PullRequest
0 голосов
/ 23 октября 2019

Если я использую overflow:hidden в упорядоченном списке, числа исчезают, как их сохранить и одновременно скрыть переполненные символы?

li {
  overflow:hidden;
  max-width:70ch
}
<ol>
  <li>Lorem ipsum dolor sit amet, consectetur adipiscing elit</li>
  <li>Suspendisse venenatis arcu vitae tempor feugiat.</li>
  <li>Aenean pellentesque orci eu ligula venenatis sodales.</li>
  <li>Praesent sed quam et turpis accumsan luctus.</li>
  <li>Nullam sodales nisl eu ultricies convallis</li>
<ol>

Ответы [ 2 ]

3 голосов
/ 23 октября 2019

Используйте пользовательский счетчик и рассмотрите display:flex, чтобы сохранить отступ при переносе:

li {
  overflow:hidden;
  max-width:70ch;
  display:flex;
}
ol {
  list-style:none;
  counter-reset:num;
}
ol li:before {
  content:counter(num) ". ";
  counter-increment:num 1;
  margin-right:5px;
}
<ol>
  <li>Lorem ipsum dolor sit amet, consectetur <br>adipiscing elit</li>
  <li>Suspendisse venenatis arcu vitae <br>tempor feugiat.</li>
  <li>Aenean pellentesque orci eu ligula venenatis sodales.</li>
  <li>Praesent sed quam et turpis accumsan luctus.</li>
  <li>Nullam sodales nisl eu ultricies convallis</li>
<ol>
2 голосов
/ 23 октября 2019

Установить list-style-position: inside в списке, это поместит числа внутри элемента списка:

ol {
  list-style-position: inside;
}

li {
  overflow: hidden;
  max-width: 70ch
}
<ol>
  <li>Lorem ipsum dolor sit amet, consectetur adipiscing.</li>
  <li>Suspendisse venenatis arcu vitae tempor feugiat.</li>
  <li>Aenean pellentesque orci eu ligula venenatis.</li>
  <li>Praesent sed quam et turpis accumsan luctus.</li>
  <li>Nullam sodales nisl eu ultricies convallis</li>
</ol>

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

/* counter */
ol {
  counter-reset: foo 0;
  list-style-type: none;
}
li {
  counter-increment: foo 1;
}
li:before {
  content: counter(foo) ".";
}
/* position */
li {
  padding-left: 2em;
}
li::before {
  float: left;
  margin-left: -2em;
  width: 1.75em;
  text-align: right;
}
li {
  overflow: hidden;
  max-width: 70ch;
}
<ol>
  <li>Lorem ipsum dolor sit amet, consectetur adipiscing.</li>
  <li>Suspendisse venenatis arcu vitae tempor feugiat.</li>
  <li>Aenean pellentesque orci eu ligula venenatis.</li>
  <li>Praesent sed quam et turpis accumsan luctus.</li>
  <li>Nullam sodales nisl eu ultricies convallis.</li>
  <li>Lorem ipsum dolor sit amet, consectetur adipiscing.</li>
  <li>Suspendisse venenatis arcu vitae tempor feugiat.</li>
  <li>Aenean pellentesque orci eu ligula venenatis.</li>
  <li>Praesent sed quam et turpis accumsan luctus.</li>
  <li>Nullam sodales nisl eu ultricies convallis. Nullam sodales nisl eu ultricies convallis.</li>
</ol>
...