CSS-переполнение текста: эллипсис; не работает?

Я не знаю, почему этот простой CSS не работает...

.app a {
  height: 18px;
  width: 140px;
  padding: 0;
  overflow: hidden;
  position: relative;
  margin: 0 5px 0 5px;
  text-align: center;
  text-decoration: none;
  text-overflow: ellipsis;
  white-space: nowrap;
  color: #000;
}
<div class="app">
  <a href="">Test Test Test Test Test Test</a>
</div>

Ответ 1

text-overflow:ellipsis; работает только тогда, когда выполняются следующие условия:

  • Ширина элемента должна быть ограничена в px (пикселях). Ширина в % (процентах) не будет работать.
  • Элемент должен иметь overflow:hidden и white-space:nowrap задан.

Причина у вас возникли проблемы здесь потому, что width вашего a элементе не ограничена. У вас есть настройка width, но поскольку элемент настроен для display:inline (т.е. по умолчанию), он игнорирует его, и ничто другое также не ограничивает его ширину.

Вы можете исправить это, выполнив одно из следующих действий:

  • Установите элемент для display:inline-block или display:block (возможно, первый, но зависит от ваших требований макета).
  • Установите для одного из его элементов контейнера значение display:block и присвойте этому элементу фиксированную width или max-width.
  • Установите для элемента значение float:left или float:right (вероятно, первое, но опять-таки, любой из них должен иметь тот же эффект, что и многоточие).

Я бы посоветовал display:inline-block, так как это будет иметь минимальное коллатеральное влияние на ваш макет; он работает очень похоже на display:inline который он использует в настоящее время в отношении макета, но не стесняйтесь экспериментировать и с другими точками; Я пытался дать как можно больше информации, чтобы помочь вам понять, как эти вещи взаимодействуют друг с другом; Большая часть понимания CSS связана с пониманием того, как различные стили работают вместе.

Надеюсь, это поможет.

Вот фрагмент с вашим кодом, с добавлением display:inline-block, чтобы показать, насколько вы были близки.

.app a {
  height: 18px;
  width: 140px;
  padding: 0;
  overflow: hidden;
  position: relative;
  display: inline-block;
  margin: 0 5px 0 5px;
  text-align: center;
  text-decoration: none;
  text-overflow: ellipsis;
  white-space: nowrap;
  color: #000;
}
<div class="app">
  <a href="">Test Test Test Test Test Test</a>
</div>

Ответ 2

Принятый ответ потрясающий. Однако вы все равно можете использовать % width и достичь text-overflow: ellipsis. Решение простое:

display: inline-block; /* for em, a, span, etc (inline by default) */
text-overflow: ellipsis;
width: calc (80%); /* The trick is here! */

Кажется, всякий раз, когда используется calc, конечное значение отображается в абсолютных пикселей, которые последовательно преобразует 80% в нечто вроде 800px для 1000px -width контейнер. Поэтому вместо использования width: [YOUR PERCENT]% используйте width: calc([YOUR PERCENT]%).

Ответ 3

Также убедитесь, что word-wrap установлен в нормальное состояние для IE10 и ниже.

Стандарты, указанные ниже, определяют это поведение свойства как зависящее от настройки свойства "text-wrap". Тем не менее, параметры wordWrap всегда эффективны в Windows Internet Explorer, потому что Internet Explorer не поддерживает свойство "text-wrap".

Следовательно, в моем случае word-wrap был установлен на break-word (унаследованный или по умолчанию?), заставляя text-overflow работать в FF и Chrome, но не в IE.

ms информация об атрибуте word-wrap

Ответ 4

anchor, span... теги встроенные элементы по умолчанию. В случае встроенных элементов свойство width не работает. Таким образом, вы должны преобразовать свой элемент в элементы inline-block или block level

Ответ 5

Включите четыре строки, написанные после информации для работы многоточия

.app a
{
 color: #fff;
 font: bold 15px/18px Arial;
 height: 18px;
 margin: 0 5px 0 5px;
 padding: 0;
 position: relative;
 text-align: center;
 text-decoration: none;
 width: 140px;

 /* 
 Note: The Below 4 Lines are necessary for ellipsis to work.
 */

 display: block;/* Change it as per your requirement. */
 overflow: hidden;
 text-overflow: ellipsis;
 white-space: nowrap;
}

Ответ 6

Добавьте display: block; или display: inline-block; в #User_Apps_Content .DLD_App a

демо

Ответ 7

Вы просто добавляете одну строку css:

.app a {
   display: inline-block;
}

Ответ 8

Поэтому, если вы дойдете до этого вопроса из-за проблем с попыткой заставить многоточие работать в контейнере display: flex, попробуйте добавить min-width: 0 к внешнему контейнеру, который переполняет его родителя, даже если вы уже установили overflow: hidden для это и посмотрим, как это работает для вас.

Более подробная информация и рабочий пример этого кодекса от aj-foster. Полностью добился цели в моем случае.

Ответ 9

Вы также можете добавить float: left; внутри этого класса #User_Apps_Content.DLD_App a

Ответ 10

В bootstrap 4 вы можете добавить класс .text-truncate для усечения текста с помощью многоточия.

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<link href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css" rel="stylesheet" />
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js"></script>

<!-- Inline level -->
<span class="d-inline-block text-truncate" style="max-width: 250px;">
  The quick brown fox jumps over the lazy dog.
</span>

Ответ 11

Я должен был сделать несколько длинных описаний эллипса (возьмите только одну полосу), будучи отзывчивыми, поэтому мое решение состояло в том, чтобы разрешить перенос текста (вместо white-space: nowrap), а вместо фиксированной ширины я добавил фиксированную высоту:

span {
  display: inline-block;
  line-height: 1rem;
  height: 1rem;
  overflow: hidden;
  // OPTIONAL LINES
  width: 75%;
  background: green;
  //  white-space: normal; default
}
<span>
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Commodi quia quod reprehenderit saepe sit. Animi deleniti distinctio dolorum iste molestias reiciendis saepe. Ea eius ex, ipsam iusto laudantium natus obcaecati quas rem repellat temporibus! A alias at, atque deserunt dignissimos dolor earum, eligendi eveniet exercitationem natus non, odit sint sit tempore voluptate. Commodi culpa ex facere id minima nihil nulla omnis praesentium quasi quia quibusdam recusandae repellat sequi ullam, voluptates. Aliquam commodi debitis delectus magnam nulla, omnis sequi sint unde voluptas voluptatum. Adipisci aliquam deserunt dolor enim facilis libero, maxime molestias, nemo neque non nostrum placeat reprehenderit, rerum ullam vel? A atque autem consectetur cum, doloremque doloribus fugiat hic id iste nemo nesciunt officia quaerat quibusdam quidem quisquam similique sit tempora vel. Accusamus aspernatur at au
</span>

Ответ 12

outlook не поддерживает переполнение текста

Ответ 13

Должен содержать

  text-overflow: ellipsis;
  white-space: nowrap;
  overflow: hidden;

НЕ ДОЛЖЕН содержать

display: inline

ДОЛЖЕН содержать

position: sticky

Ответ 14

Напишите их в своем правиле css.

overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;