긴 문자에 유용하게 적용할 수 있는 CSS 속성

nkcho·2023년 3월 30일
post-thumbnail

실무에서 일하다보면 문자 관련해서 아래와 같은 경우를 종종 마주친다.

  1. 박스의 너비는 고정되어 있는데 문자가 길어져 아래와 같이 어색하게 끊기는 경우
	구독 쿠폰 할
    인율은 30% 입
    니다.
  1. .jsx(or .tsx) 파일에서\n을 사용했는데 줄바꿈이 적용이 안된다. (그렇다고 <br /> 태그를 넣자니 그대로 문자 안에 노출된다.)

분명 아는 놈인데 어떻게 했더라.. 하면서 검색하는 시간이 아까워 정리해둔다.

1-1. word-break

글자-쪼개기, 즉 박스 밖으로 글자가 넘어가면 글자를 어떻게 쪼갤지(줄바꿈할 지) 결정하는 속성이다. 아시아권 언어냐 비아시아권 언어냐에 따라 속성이 적용되는

  • word-break : normal
    일반적인 줄 바꿈 지점(두 단어 사이의 공백)에서만 줄을 바꾼다.
  • word-break : break-all
    문자를 강제로 줄바꿈 할 수 있다. 단, 비아시아권 언어에만 이에 해당하며 아시아권 언어는 normal과 동일한 효과다.
  • word-break : keep-all
    아시아권 텍스트에서는 줄바꿈 시 단어를 끊지 않는다. 비아시아권 텍스트라면 normal과 동일한 효과다.

1-2. overflow-wrap (legacy 버전은 word-wrap)

word-break가 아시아권 언어(CJK)에 적용 가능하다면, overflow-wrap은 더 넓은 범위, 즉 비아시아권 언어까지 커버되는 속성이다. 한국 서비스를 개발하게 된다면 overflow-wrap보단 word-break를 좀 더 애용하게 될 것 같다.
그래도 간단히 속성만 정리하자면,

  • overflow-wrap : normal
    일반적인 줄 바꿈 지점(두 단어 사이의 공백)에서만 줄을 바꾼다.
  • overflow-wrap : break-all
    쪼개질 부분이 안보이면 그냥 알아서 쪼개준다. 단, 단어 자체를 쪼개진 않는다. (ex. b/eautiful 이런 식으로 쪼개서 줄바꿈하지 않음)

2. white-space

위 속성들이 텍스트의 줄바꿈을 중심으로 적용되는 속성이라면 white-space는 요소가 공백 문자를 처리하는 법을 정한다.

  • white-space : normal
    연속 공백을 하나로 합친다. (개행 문자도 연속 두 번이라면 한 번으로 합친다.) 만약 한 줄이 박스 너비를 넘는다면 자동으로 줄바꿈을 적용한다. 공식 문서에서 하나로 처리한다는 말이 좀 모호한데, 텍스트 맨 앞 혹은 맨 뒤에 공백이 있다면 그건 없애고 중간에 있는 공백은 띄어쓰기 하나 정도로 처리한다는 뜻으로 이해했다.
  • white-space : nowrap
    연속 공백을 하나로 합친다. 안감싼다는 단어 말 그대로 <br /> 태그가 있을 때만 줄바꿈이 발생하며 나머지는 공백을 모두 하나로 합친다.
  • white-space : pre-wrap
    연속 공백은 유지한다. 줄바꿈은 개행문자(\n)와 <br /> 태그가 있을 때 일어나며, 한 줄이 너무 길다면 자동 줄바꿈이 적용된다.
  • white-space : pre-line
    연속 공백을 하나로 합친다. 줄바꿈은 개행문자(\n)와 <br /> 태그가 있을 때 일어나며, 한 줄이 너무 길다면 자동 줄바꿈이 적용된다.

단순 줄바꿈만 적용을 원한다면 pre-line이 적절할 수 있겠다. 문단 텍스트 맨 앞이나 맨 뒤에 존재하는 공백은 알아서 없애주기 때문에..

profile
FE developer

0개의 댓글