css 텍스트 말줄임 처리 및 문장 수 제어 가이드

css 텍스트 말줄임 처리 및 문장 수 제어 가이드

구글링 그만하고 이제는 외워보자

·

2 min read

1. 글의 목적

CSS로 작업하다 보면 텍스트를 말줄임 처리하거나 문장 수를 제어해야 할 때가 자주 있다. 그동안은 구글링을 통해 찾은 코드 조합을 그대로 사용하는 데 그쳤지만, 이번 기회를 통해 그 원리를 제대로 이해하고 직접 활용할 수 있도록 학습해보려 한다.


2. 한 줄 텍스트 말 줄임

한 줄 텍스트에 말줄임을 적용하려면, 우선 HTML 요소가 “가로 너비를 조정할 수 있는” 블록 요소여야 한다. 텍스트가 부모 요소의 가로 너비 내에서 자동으로 개행되지 않도록 white-space: nowrap 속성을 적용해야 한다.

오른쪽 예시와 같이 nowrap 속성을 적용하면 개행이 발생하지 않는다.
.selector {
 display:block; /* 블록, 인라인 요소 여부에 따라 다름 */
 white-space:nowrap;
 text-overflow: ellipsis;
 overflow:hidden;
}

위 코드에서 overflow: hidden을 통해 넘치는 텍스트를 가려주고, text-overflow: ellipsis로 넘친 텍스트에 말줄임 표시를 적용한다.

overflow: hidden을 적용하지 않으면, text-overflow: ellipsis를 적용해도 말줄임 효과가 나타나지 않는다. (왼쪽예시)

3. 문장 수 제어와 여러 줄 텍스트 말 줄임

여러 줄 텍스트에 말줄임을 적용하려면 white-space 속성 대신 다음과 같은 속성들을 사용한다.

.selector {
 display:-webkit-box;
 -webkit-line-clamp:2;
 -webkit-box-orient:vertical;
 overflow:hidden;
}
  • display: -webkit-box : 해당 영역을 box 형태로 관리한다.

  • webkit-line-clamp : 영역 내의 컨텐츠 최대 라인 수를 결정한다.

    • 이 속성이 제대로 동작하려면 display: -webkit-boxwebkit-box-orient: vertical이 함께 지정되어야 한다.
  • webkit-box-orient: vertical : 영역 내의 요소들을 수직 방향으로 정렬한다.

    • -webkit-box-orient 속성은 영역 내의 요소의 배치 방향을 설정하고 webkit-line-clamp 속성의 값 만큼에서 말줄임 표시(…)를 적용한다.
  • overflow: hidden : 부모 요소를 넘는 텍스트를 가린다.

overflow: hidden 속성을 적용하지 않은 예시와 적용한 예시

3-1. -webkit-box의 브라우저 호환성

22년 중순에 인터넷 익스플로러(IE)가 서비스 종료를 하게 되면서 현재는 -webkit-box를 호환성 걱정없이 사용할 수 있게 되었다. 🥳 (IE를 대응해주던 때에는 별도의 height를 지정해 주었다고 한다.)


참고자료

https://usingu.co.kr/frontend/css/css-%EB%A7%90%EC%A4%84%EC%9E%84-%ED%91%9C%EC%8B%9C-text-overflow/

https://shape-coding.tistory.com/entry/CSS-%ED%85%8D%EC%8A%A4%ED%8A%B8-ellipsis-%EB%A7%90%EC%A4%84%EC%9E%84-%ED%91%9C%EC%8B%9C-%EC%B2%98%EB%A6%AC-%EB%B0%A9%EB%B2%95