이번 시간에는 글자가 특정 너비 혹은 줄을 넘어가는 경우 말줄임(...)으로 나타나게 해보자!
1. 한 줄 말줄임
1) 미리보기
See the Pen text one line ellipsis by KumJungMin (@kumjungmin) on CodePen.
2) 전체 코드 보기
- 이미지와 같은 한 줄 말줄임은 아래 코드로 구현할 수 있다.
- 말줄임에 필요한 속성은 총 4가지(
width
,text-overflow
,white-space
,overflow
)이다.
<div class="text">가나다라마바</div>
.text {
width: 250px;
font-size: 50px;
text-overflow: ellipsis;
white-space: nowrap;
overflow: hidden;
}
3) CSS 코드 자세히 보기
(1) width, 너비를 지정하자
- 글자가 얼마의 너비를 넘어갔을 때 말줄임을 사용할 건지 정해준다.
.text {
width: 250px; /*글자가 250px을 넘으면 숨길거야*/
}
(2) white-space, 한 줄로 표기하자
- html에서 글자가 특정 범위를 넘어갈 시 자동으로 줄바꿈이 된다.
- 하지만 우리는 한 줄 말줄임을 해야 하기에, 자동 줄바꿈을 적용하면 안된다.
white-space: nowrap
을 하여 자동 줄바꿈을 없애자
.text {
width: 250px;
white-space: nowrap; /*자동 줄바꿈을 적용하지 않을거야*/
}
(3) text-overflow & overflow, 넘치는 경우를 처리하자
- 우리는 글자가 특정 너비를 넘어가는 경우, 말줄임 처리를 하고 싶다.
- 이를 위해서는
text-overflow
처리를 해야한다. text-overflow
는 글자가 특정 범위를 벗어나는 경우에 어떻게 처리할 건지 지정할 수 있다.- 말줄임 처리를 하려면,
text-overflow: ellipsis
를 하면 된다.
잠깐!
text-overflow
를 적용하기 위해선overflow
(visible 제외)를 지정해야한다.
.text {
width: 250px;
text-overflow: ellipsis;
white-space: nowrap;
overflow: hidden;
}
2. 여러 줄 말 줄임
앞서 우리는 한 줄 말줄임 처리를 보았다.
그렇다면 여러 줄을 말줄임 처리하고 싶을 때 어떻게 해야할까? 같이 살펴보자
1) 미리보기
See the Pen text mutiple line ellipsis by KumJungMin (@kumjungmin) on CodePen.
2) 전체 코드 보기
- 이미지와 같은 여러 줄 말줄임은 아래 코드로 구현할 수 있다.
- 말줄임에 필요한 속성은 총 6가지이다.
width
,display
,-webkit-line-clamp
,-webkit-box-orient
,text-overflow
,overflow
<div class="text">가나다라마바사아아가나다라마바사아아가나다라마바사아아가나다라마바사아아가나다라마바사아아가나다라마바사아아가나다라마바사아아가나다라마바사아아가나다라마바사아아가나다라마바사아아가나다라마바사아아가나다라마바사아아가나다라마바사아아가나다라마바사아아</div>
.text {
width: 300px;
display: -webkit-box;
word-wrap: break-word;
-webkit-line-clamp: 3;
-webkit-box-orient: vertical;
text-overflow: ellipsis;
overflow: hidden;
}
3) CSS 코드 자세히 보기
(1) width, text-overflow 처리하기
- 앞서 한 줄 말줄임에서 한 것처럼 너비와
text-overflow
설정이 필요하다. - 또한,
text-overflow
를 사용하기 위해서는overflow
지정이 필요하다.
.text {
width: 300px;
text-overflow: ellipsis;
overflow: hidden;
}
(2) webkit-line-clamp, 최대 라인수 지정하기
- 만약 세 번째 라인부터 말줄임을 주고 싶다면,
webkit-line-clamp: 3
속성을 사용하면 된다.
.text {
width: 300px;
text-overflow: ellipsis;
overflow: hidden;
webkit-line-clamp: 3;
}
어? 그런데 말줄임 적용이 안된다? 그 이유가 뭘까?
- webkit-line-clamp 속성을 사용하기 위해선, display는
webkit-box
또는webkit-inline-box
로 지정해야 하며,webkit-box-orient
속성을vertical
로 적용해야 한다!
(2) display를 박스로 변경하기
display
에-webkit-box
를 하여, 요소를 박스로 지정한다.
.text {
width: 300px;
text-overflow: ellipsis;
overflow: hidden;
webkit-line-clamp: 3;
display: -webkit-box;
}
- 그 다음, 박스 내부 컨텐츠의 정렬은 수직 정렬로 변경해야 한다.
- display가 box일 땐
webkit-box-orient
을 사용해 내부 컨텐츠 정렬을 변경할 수 있다. - 아래 예시는
webkit-box-orient
을horizontal
,vertical
로 했을 때 차이이다.
See the Pen box-orient by KumJungMin (@kumjungmin) on CodePen.
- 예시에서 본
vertical
을 지정하여 글자를 수직 정렬로 변경하면 완료이다!
.text {
width: 300px;
text-overflow: ellipsis;
overflow: hidden;
webkit-line-clamp: 3;
display: -webkit-box;
-webkit-box-orient: vertical; /* 추가 */
}
잠깐!
webkit-line-clamp
은 webkit 엔진을 사용치 않는 브라우저에선 문제가 된다! 그렇기에line-height
,height
(line-height * 라인수)를 줘야 한다.
.text {
width: 300px;
font-size: 40px;
text-overflow: ellipsis;
overflow: hidden;
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 3;
line-height: 50px; /* 추가 */
height: 150px; /* line-height x line */
}
See the Pen text mutiple line ellipsis (with height) by KumJungMin (@kumjungmin) on CodePen.
반응형
'개발 기술 > 사소하지만 놓치기 쉬운 개발 지식' 카테고리의 다른 글
[JS] 최대 스크롤값 구하는 법(scrollTop, scrollLeft) (1) | 2021.12.13 |
---|---|
[CSS] max-width, 줄바꿈 같이 쓰는 법 (0) | 2021.12.12 |
[css 속성] object-fit (0) | 2021.11.11 |
focus 관련 선택자를 알아보자(focus, focus-within, focus-visible) (0) | 2021.10.27 |
svg animation (with. feGaussianBlur, feOffset etc..) (0) | 2021.10.18 |
댓글