Menu

CSS 밑줄: text-decoration, 색, 간격, 밑줄 없애기

text-decoration으로 텍스트에 밑줄을 긋고, 선의 색, 스타일, 두께, 텍스트와의 거리를 조절해요. 링크 밑줄을 없애는 방법과 없애면 안 되는 경우도 알아봐요.

이 페이지에는 실행 가능한 에디터가 있습니다 - 편집하고 실행하면 결과를 바로 볼 수 있습니다.

CSS로 밑줄 긋는 법

text-decoration: underline은 텍스트 아래에 선을 그려요. 따로 색을 주지 않으면 선은 글자 색을 가져가요.

두 번째 줄은 text-decoration 단축 속성으로 선 종류, 스타일, 색을 정하고, 두께와 간격은 각자의 속성으로 정해요. 명세상으로는 단축 속성 안에 두께를 넣을 수도 있지만, 그러면 Safari가 선언 전체를 버리니 text-decoration-thickness를 따로 쓰세요.

text-decoration 속성들

속성값기본값
text-decoration-lineunderline, overline, line-through, none (조합 가능)none
text-decoration-stylesolid, double, dotted, dashed, wavysolid
text-decoration-color모든 색currentColor (글자 색)
text-decoration-thickness길이, 퍼센트, auto, from-fontauto
text-underline-offset길이, 퍼센트, autoauto

text-decoration은 처음 네 가지의 단축 속성이지만, 두께는 넣지 마세요. Safari는 두께가 들어 있는 text-decoration 선언을 무시해요. text-underline-offset은 별도 속성이라 따로 적어야 해요.

스타일, 색, 두께

밑줄 옮기기: text-underline-offset

기본적으로 선은 글자에 가깝게 붙고 g, p, y 같은 아래로 내려가는 글자 둘레에서는 끊겨요. text-underline-offset은 선을 더 아래로 밀어서, 제목과 링크에서 더 깔끔하게 보일 때가 많아요.

내려가는 글자 둘레의 틈은 기본으로 켜져 있는 text-decoration-skip-ink: auto에서 나와요. 끊기지 않는 선을 원하면 none으로 지정하세요.

링크 밑줄 없애기

링크는 브라우저 스타일시트 때문에 밑줄이 있어요. text-decoration: none으로 없애요. 많은 독자가 밑줄로 링크를 찾기 때문에, hover와 키보드 포커스 때 밑줄을 다시 보여 주고 링크에 텍스트와 다른 색을 주세요.

내비게이션 바와 버튼은 위치만으로도 "링크"라는 걸 알 수 있으니 밑줄을 빼도 괜찮아요. 텍스트 문단 안에서는 남겨 두세요. 링크 상태는 hover 페이지에서 더 다뤄요.

윗줄과 취소선

text-decoration-line은 텍스트 위나 가운데에도 선을 그리고, 값을 여러 개 받아요.

.old-price { text-decoration: line-through; }
.both      { text-decoration-line: underline overline; }

CSS로 그은 취소선은 시각적인 효과일 뿐이에요. 텍스트가 삭제된 내용(바뀐 가격, 빠진 항목)이라면 HTML 밑줄 페이지에서 보여 주듯 <s>나 <del>로 마크업해서 의미가 스타일만이 아니라 마크업에 담기게 하세요.

자주 하는 실수

  • 꾸미려고 <u>로 밑줄 긋기. <u>는 맞춤법 오류처럼 다르게 표시된 텍스트용이에요. 꾸미는 밑줄은 CSS를 쓰세요.
  • 링크가 아닌 텍스트에 밑줄 긋기. 독자가 클릭하려고 해요. 강조에는 굵기, 색, 배경을 쓰세요.
  • 다른 신호 없이 본문의 링크 밑줄 없애기. 차이를 볼 수 없는 독자에게 색만으로는 부족해요.
  • 자식에서 부모의 밑줄 없애려 하기. 안쪽에서는 되돌릴 수 없어요. 부모를 바꾸거나 자식을 inline-block으로 만드세요.
  • 단축 속성에 text-underline-offset이 들어갈 거라고 기대하기. 별도 속성이에요.
  • 단축 속성에 두께 넣기. text-decoration: underline 2px는 Chrome과 Firefox에서는 동작하지만 Safari는 선언 전체를 버려요. text-decoration-thickness를 쓰세요.

자주 묻는 질문

CSS로 텍스트에 밑줄은 어떻게 긋나요?

요소에 text-decoration: underline;을 쓰세요. 선의 모양은 text-decoration-color, text-decoration-style, text-decoration-thickness, text-underline-offset을 추가해서 바꿔요.

링크의 밑줄은 어떻게 없애나요?

a 요소에 text-decoration: none;을 지정하세요. 많은 독자가 밑줄로 링크를 찾기 때문에, 다른 방법(색, 그리고 hover나 포커스 때의 밑줄)으로 링크가 여전히 눈에 띄게 하세요.

밑줄 색은 어떻게 바꾸나요?

text-decoration-color나 단축 속성 text-decoration: underline #f59e0b;를 쓰세요. 지정하지 않으면 선은 글자 색을 써요.

텍스트와 밑줄 사이에 간격은 어떻게 주나요?

text-underline-offset을 써요. 예를 들면 text-underline-offset: 4px;예요. 값이 클수록 선이 텍스트 아래로 더 멀어져요.

자식 요소에서 밑줄을 없앨 수 없는 이유는 무엇인가요?

부모가 그린 밑줄은 자식 위로 가로질러 그려져서 자식 안에서 없앨 수 없어요. 밑줄을 지정한 요소에서 없애거나, 부모의 장식이 닿지 않는 display: inline-block으로 자식을 만드세요.

Coddy programming languages illustration

Coddy로 코딩 배우기

시작하기