image

텍스트 라인 수 제한

태그
Css
상세설명CSS로 텍스트 라인 수 제한 하기
작성일자2023.10.15

영역에 비해 글자 수가 넘치면 ( "..." ) 로 말줄임표를 사용하는 경우가 있다. javascript로 일정글자 수 이상일 때 slice 함수를 활용 할 수도 있지만 css로도 제어 말줄임표를 줄 수 있다.

아래 코드와 이미지는 글자들이 width값에 맞춰 자동으로 줄바꿈이 이뤄지고 있는 상태이다.

<html lang="en">
  <head>
    <style>
      * {
        margin: 0;
        padding: 0;
        box-sizing: border-box;
      }
      html,
      body {
        height: 100%;
      }
      .center {
        display: flex;
        align-items: center;
        justify-content: center;
        height: 100%;
      }
      .textBox {
        width: 300px;
        padding: 14px;
        border: 1px solid #000;
      }
    </style>
  </head>
  <body>
    <div class="center">
      <p class="textBox">
         The generated Lorem Ipsum is therefore always free from repetition,
         injected humour, or non-characteristic words etc. The generated Lorem
         Ipsum is therefore always free from repetition, injected humour, or
         non-characteristic words etc.
      </p>
    </div>
  </body>
</html>

image

한 줄로 제한하기

width값이 있는 p태그에 white-space: nowrap; overflow: hidden; text-overflow: ellipsis; 스타일을 추가하면 ( "..." ) 말줄임표와 함께 영역을 넘치는 글자는 숨겨진다.

white-space: nowrap : 전체 문단을 한 줄로 표시해주는 역할

overflow: hidden : 영역 밖을 넘어간 글자들을 숨겨주는 역할

text-overflow: ellipsis : 영역 밖을 넘어가면 말줄임표 ( "..." ) 추가하는 역할

.textBox {
   width: 300px;
   padding: 14px;
   border: 1px solid #000;
   
   /* 추가 */
   white-space: nowrap;
   overflow: hidden;
   text-overflow: ellipsis;
}

image

여러 줄로 제한하기

2줄 이상의 글에 마지막에만 말줄임표를 적용하고 싶으면 overflow: hidden; text-overflow: ellipsis; display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 3; 스타일을 추가하면 된다.

overflow: hidden : 영역 밖을 넘어간 글자들을 숨겨주는 역할

text-overflow: ellipsis : 영역 밖을 넘어가면 말줄임표 ( "..." ) 추가하는 역할

display: -webkit-box : 플렉스 박스를 구현하기 위해 웹킷 엔진에서 사용하는 속성

-webkit-box-orient: vertical : flexible box의 흐름 방향을 지정하는 속성 (vertical: 세로, horizontal: 가로)

-webkit-line-clamp: 3 : 텍스트 라인 수

.textBox {
   width: 300px;
   padding: 14px;
   border: 1px solid #000;
   
   /* 추가 */
   overflow: hidden;
   text-overflow: ellipsis;
	 display: -webkit-box;
   -webkit-box-orient: vertical;
   -webkit-line-clamp: 3;
}

image

문제는 영역에 padding이나 height 값을 추가하면 말줄임표 이후에 글씨들이 보인다.

image

라인 수 제한을 걸어야 하는 태그에 부모 태그(<div></div>)를 추가하고 부모태그에 padding이나 height 스타일을 주면 된다.

<html lang="en">
  <head>
    <style>
      .center {
        display: flex;
        align-items: center;
        justify-content: center;
        height: 100%;
      }
			
			 /* 추가 */
      .padding {
        padding: 14px;
        border: 1px solid #000;
      }

      .textBox {
				// padding 값 없음
        width: 300px;
        overflow: hidden;
        text-overflow: ellipsis;
        display: -webkit-box;
        -webkit-box-orient: vertical;
        -webkit-line-clamp: 3;
      }
    </style>
  </head>
  <body>
    <div class="center">
      <div class="padding"> <!-- 추가 -->
        <p class="textBox">
          The generated Lorem Ipsum is therefore always free from repetition,
          injected humour, or non-characteristic words etc. The generated Lorem
          Ipsum is therefore always free from repetition, injected humour, or
          non-characteristic words etc.
        </p>
      </div>
    </div>
  </body>
</html>

image

참고