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:hidden
và white-space:nowrap
thiết lập.
Lý do bạn gặp vấn đề ở đây là vì yếu tố width
của bạn a
không bị hạn chế. Bạn có một width
cà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-block
hoặ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:block
và cung cấp cho phần tử đó cố định width
hoặc max-width
.
- Đặt phần tử thành
float:left
hoặ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:inline
cá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: