text-overflow:ellipsis; chỉ hoạt động khi những điều sau là đúng:
- Độ rộng của phần tử phải được giới hạn bằng
px(pixel). Chiều rộng trong %(phần trăm) sẽ không hoạt động.
- Các yếu tố phải có
overflow:hiddenvà white-space:nowrapthiết lập.
Lý do bạn gặp vấn đề ở đây là vì yếu tố widthcủa bạn akhông bị hạn chế. Bạn có một widthcài đặt, nhưng vì phần tử được đặt thành display:inline(nghĩa là mặc định) nên nó bỏ qua nó và không có gì khác làm hạn chế chiều rộng của nó.
Bạn có thể khắc phục điều này bằng cách thực hiện một trong các cách sau:
- Đặt thành phần thành
display:inline-blockhoặc display:block(có thể là trước đây, nhưng phụ thuộc vào nhu cầu bố trí của bạn).
- Đặt một trong các thành phần chứa của nó thành
display:blockvà cung cấp cho phần tử đó cố định widthhoặc max-width.
- Đặt phần tử thành
float:lefthoặc float:right(có thể là trước đây, nhưng một lần nữa, hoặc sẽ có tác dụng tương tự như liên quan đến dấu chấm lửng).
Tôi đề nghị display:inline-block, vì điều này sẽ có tác động tài sản thế chấp tối thiểu đối với bố cục của bạn; nó hoạt động rất giống với display:inlinecái mà nó hiện đang sử dụng liên quan đến bố cục, nhưng cũng thoải mái thử nghiệm với các điểm khác; Tôi đã cố gắng cung cấp càng nhiều thông tin càng tốt để giúp bạn hiểu cách thức những thứ này tương tác với nhau; một phần lớn của sự hiểu biết CSS là về cách hiểu các phong cách khác nhau làm việc cùng nhau.
Đây là một đoạn mã với mã của bạn, display:inline-blockđược thêm vào, để cho thấy mức độ gần gũi của bạn.
.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>
Tài liệu tham khảo hữu ích: