IT/기초 지식
[CSS] CSS로 긴 문자를 생략형(...)으로 바꾸는 방법
개발자 두더지
2023. 5. 10. 20:28
728x90
※ 일본의 한 블로그 글을 번역한 포스트입니다. 오역 및 의역, 직역이 존재하며 틀린 내용은 지적해주시면 감사하겠습니다.
CSS로 규정의 폭보다 문자 수가 많아지는 경우에 텍스트를 생략형으로 바꾸는 방법에 대해서 설명하고자한다. 그리고 한 줄의 텍스트뿐만 아니라 2줄 이상의 텍스트도 적용가능하다.
한 줄 텍스트의 경우
text-overflow를 사용한다. 사용할 때는 두 가지 규칙이 있다.
- overflow: hidden; 및 white-space: nowrap; 과 함께 사용해야한다.
- text-overflow는 Block요소에 대해 inline(옆 방향)으로 튀어 나온 텍스트에 효과가 있다.
Block 요소 샘플 코드
// HTML
<div class="text-overflow" style="max-width: 200px;">
CSS로 텍스트를 생략하는 테스트입니다.
</div>
// CSS
.text-overflow {
text-overflow: ellipsis;
overflow: hidden;
white-space: nowrap;
}
TABLE 샘플 코드
table-cell 속성에서도 사용할 수 있지만 주의점이 있다. table 자체에 width를 지정할 필요가 있다는 것이다. 지정한다면 width:100%도 괜찮다. td의 폭을 넘는 순간 생략된다.
// HTML
<table style="max-width: 200px;">
<tr>
<td class="text-overflow" style="max-width: 200px;">
CSS로 튀어나온 텍스트를 생략하는 테스트입니다. CSS로 튀어나온 텍스트를 생략하는 테스트입니다. CSS로 튀어나온 텍스트를 생략하는 테스트입니다.
</td>
</tr>
</table>
text-overflow가 적용되지 않은 경우
최근에 레이아웃을 구성할 때 display: flex를 사용하는 경우가 늘어나고 있다. 그러나 text-overflow가 지정되어 있는 요소가 flex인 경우 텍스트의 생략이 통하지 않게 된다.
그러므로 사용할 때는 div등으로 적용할 요소를 감싸줄 필요가 있다.
2줄 이상 텍스트의 경우
다음과 같이 CSS를 지정하면 된다.
// HTML
<div class="text-overflow-lines" style="max-width: 200px;">
CSS로 튀어나온 텍스트를 생략하는 테스트입니다. CSS로 튀어나온 텍스트를 생략하는 테스트입니다.CSS로 튀어나온 텍스트를 생략하는 테스트입니다. CSS로 튀어나온 텍스트를 생략하는 테스트입니다.
</div>
// CSS
.text-overflow-lines {
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 3;
overflow: hidden;
}
참고자료
728x90