2017-06-08 100 views
5

Tôi có bố cục lưới như bố cục ở header bên dưới. Có một văn bản trong div có chiều rộng là 1fr. Tôi muốn văn bản bên trong div đó bị cắt ngắn khi nó quá dài. Thêm text-overflow làm ellpsis không hoạt động. Bất kỳ ý tưởng làm thế nào để làm điều đó?Làm cách nào để đặt tràn văn bản thành dấu ba chấm trong bố cục lưới CSS?

Nó phải là lưới và không có cách nào tôi có thể thay đổi điều đó.

html, 
 
body { 
 
    height: 100%; 
 
    width: 100%; 
 
    overflow: hidden; 
 
} 
 

 
body { 
 
    display: flex; 
 
} 
 

 
.container { 
 
    display: flex; 
 
    flex-direction: column; 
 
    flex: 1; 
 
} 
 

 
content { 
 
    flex: 1; 
 
    background-color: red; 
 
} 
 

 
header { 
 
    background-color: limegreen; 
 
    display: grid; 
 
    grid-template-columns: 0fr 1fr 0fr; 
 
} 
 

 
header div { 
 
    border: 1px solid orange; 
 
} 
 

 
.long { 
 
    text-overflow: ellipsis; 
 
}
<div class="container"> 
 
    <header> 
 
    <div>Left</div> 
 
    <div class="long">Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</div> 
 
    <div>Right</div> 
 
    </header> 
 
    <content> 
 
    </content> 
 
</div>

+0

thêm thuộc tính này vào .long {white-space: nowrap; overflow: hidden; text-overflow: elipses;} hy vọng công trình này ở đây là liên kết tham chiếu https://css-tricks.com/snippets/css/truncate-string-với-ellipsis/ –

+0

@Michael_B điều này có vẻ độc đáo đối với tôi và không phải là một bản sao, OP đang hỏi về cắt ngắn đến một dòng đơn bằng cách sử dụng CSS Grid, một con thú khác với giải pháp đa lưới không phải là lưới trong câu hỏi trùng lặp được liên kết – Lounge9

+0

@ Lounge9, Nó không thực sự là câu hỏi quan trọng. Đó là câu trả lời. Và câu hỏi này có một câu trả lời hoàn chỉnh trong bản sao. (Do đó, ghi chú nêu trên: ** Câu hỏi này đã có câu trả lời ở đây **). –

Trả lời

5

thay đổi .long c ss xuống dưới

.long { 
    text-overflow: ellipsis; 
    white-space: nowrap; 
    overflow: hidden; 
} 

lý do tại sao bạn cần phải thêm trắng sapce và tràn dưới:

  1. bạn cần white-space: nowrap nói với các trình duyệt để không quấn khi độ dài văn bản vượt quá chứa khối chiều rộng, white-space tính giá trị mặc định là bình thường, cho biết nó có thể bọc, vì vậy nó sẽ không tồn tại tình huống tràn văn bản;
  2. overflow giá trị mặc định hiển thị, khi văn bản vượt quá khối chứa, nó chỉ hiển thị, do đó không cần tràn văn bản để hiển thị, chỉ khi bạn đặt overflow thành hidden. Sau đó, khi văn bản không thể hiển thị đầy đủ, nó sẽ sử dụng thuộc tính text-overflow.
+4

Điều này không làm việc cho tôi. Khi sử dụng FR-đơn vị trong một gridlayout có vẻ như nó chỉ mở rộng hộp. Hay tôi đang làm gì sai? Thông thường mã trên hoạt động, nhưng lần đầu tiên Ive đã thử trong bố cục lưới. –

+0

Đây không phải là câu trả lời giống như Ehsan đã đưa ra? –

3

Thêm overflow: hiddenwhite-space: nowrap khi bạn sử dụng text-overflow

html, 
 
body { 
 
    height: 100%; 
 
    width: 100%; 
 
    overflow: hidden; 
 
} 
 

 
body { 
 
    display: flex; 
 
} 
 

 
.container { 
 
    display: flex; 
 
    flex-direction: column; 
 
    flex: 1; 
 
} 
 

 
content { 
 
    flex: 1; 
 
    background-color: red; 
 
} 
 

 
header { 
 
    background-color: limegreen; 
 
    display: grid; 
 
    grid-template-columns: 0fr 1fr 0fr; 
 
} 
 

 
header div { 
 
    border: 1px solid orange; 
 
} 
 

 
.long { 
 
    text-overflow: ellipsis; 
 
    white-space: nowrap; 
 
    overflow: hidden; 
 
}
<div class="container"> 
 
    <header> 
 
    <div>Left</div> 
 
    <div class="long">Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</div> 
 
    <div>Right</div> 
 
    </header> 
 
    <content> 
 
    </content> 
 
</div>

+0

Đây là mẹo hoạt động trong Chrome, nhưng FireFox (hiện tại v57) dường như không xử lý việc cắt ngắn rất tốt, đặc biệt là với lưới CSS. Phần tử '.long' chỉ đẩy rộng' .container'. – Lounge9

2

1) khi sử dụng text-overflow: ellipsis; cũng phải sử dụng overflow: hidden;.

2) white-space: nowrap; Không cho phép ngắt văn bản trong dòng mới.

Vì vậy, thay đổi như thế này:

.long { 
    text-overflow: ellipsis; 
    overflow: hidden;/*/<------------new/*/ 
    white-space: nowrap;/*/<---------new/*/ 
} 
0

Xác định chiều cao, thiết white-space-nowrapoverflow: hidden

html, 
 
body { 
 
    height: 100%; 
 
    width: 100%; 
 
    overflow: hidden; 
 
} 
 

 
body { 
 
    display: flex; 
 
} 
 

 
.container { 
 
    display: flex; 
 
    flex-direction: column; 
 
    flex: 1; 
 
} 
 

 
content { 
 
    flex: 1; 
 
    background-color: red; 
 
} 
 

 
header { 
 
    background-color: limegreen; 
 
    display: grid; 
 
    grid-template-columns: 0fr 1fr 0fr; 
 
} 
 

 
header div { 
 
    border: 1px solid orange; 
 
} 
 

 
.long { 
 
    height: 20px; 
 
    white-space: nowrap; 
 
    overflow: hidden; 
 
    text-overflow: ellipsis; 
 
}
<div class="container"> 
 
    <header> 
 
    <div>Left</div> 
 
    <div class="long">Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</div> 
 
    <div>Right</div> 
 
    </header> 
 
    <content> 
 
    </content> 
 
</div>

Các vấn đề liên quan