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>
Корисні посилання: