Menu

HTML 링크 만들기: a 태그와 href 사용법

<a> 요소로 링크를 만드는 방법이에요. href 속성, 절대 URL과 상대 URL, #id로 페이지의 특정 위치로 이동하기, 다운로드 링크, 카드 전체 링크, 링크를 망가뜨리는 실수를 알아봐요.

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

HTML에서 링크 만드는 법

링크는 href 속성이 있는 앵커 요소 <a>예요. href는 링크가 가는 곳이고, 태그 사이의 내용이 독자가 클릭하는 부분이에요.

브라우저는 링크를 파란색 밑줄로 보여 주고 커서를 손 모양으로 바꿔요. 마지막 줄은 href가 왜 중요한지 보여 줘요. href가 없으면 <a>는 일반 텍스트예요. 포커스도 안 되고, 클릭도 안 되고, 링크 스타일도 없어요.

절대 URL과 상대 URL

href 값이 링크가 갈 곳을 정해요. 주요 형태는 이래요.

href가는 곳
https://example.com/page절대 URL: 정확히 그 주소
/about현재 사이트 루트의 about
about.html현재 페이지와 같은 폴더의 about.html
../index.html한 단계 위 폴더의 index.html
#pricing이 페이지에서 id="pricing"인 요소
/help#faq이 사이트의 다른 페이지에 있는 faq 섹션
mailto:hi@example.com독자의 메일 앱에서 새 이메일
tel:+15551234567전화를 걸 수 있는 기기에서 전화 걸기

다른 사이트에는 절대 URL을, 내 사이트 안에서는 루트 기준 경로(/about)를 쓰세요. 링크가 들어 있는 페이지가 다른 폴더로 옮겨져도 계속 동작해요.

<a href="https://www.wikipedia.org/">Wikipedia</a>  <!-- another site -->
<a href="/pricing">Pricing</a>                     <!-- same site, from the root -->
<a href="www.wikipedia.org">Broken</a>              <!-- relative path, not a site! -->

마지막 줄이 가장 흔한 링크 버그예요. https://가 없으면 브라우저는 www.wikipedia.org를 현재 폴더의 파일 이름으로 읽어요.

이메일과 전화 링크는 따로 페이지가 있어요. HTML 이메일 링크를 보세요.

페이지의 특정 위치로 링크하기

id가 있는 요소는 모두 대상이 될 수 있어요. # 뒤에 id를 붙여 링크하면 브라우저가 그 위치로 스크롤해요. 미리보기에서 링크를 클릭해 보세요.

세부 사항 몇 가지예요.

  • id는 대소문자까지 정확히 일치해야 해요. href="#FAQ"는 id="faq"를 찾지 못해요.
  • href="#top"과 href="#"는 id가 top인 요소가 없어도 페이지 맨 위로 스크롤해요.
  • :target 선택자는 URL이 현재 가리키는 섹션에 스타일을 입혀요. 실제 페이지에서는 하이라이트되지만, 미리보기는 주소를 바꾸지 않고 스크롤하기 때문에 여기서는 하이라이트가 보이지 않아요.
  • 다른 페이지의 섹션으로 링크하려면 그 페이지 URL 뒤에 해시를 붙이세요. <a href="/docs/html/table#caption">처럼요.

고정 헤더 아래의 앵커 링크

sticky나 fixed 헤더는 이동한 섹션의 윗부분을 가려요. 대상에 scroll-margin-top을 주면 헤더만큼 자리를 남기고, scroll-behavior: smooth는 이동을 부드럽게 해요.

scroll-margin-top 줄을 지우고 Two를 다시 클릭해 보세요. 제목이 어두운 헤더 뒤로 숨어 버려요.

다운로드 링크

download 속성은 브라우저에게 파일을 열지 말고 저장하라고 요청해요. 값을 주면 그게 추천 파일 이름이 돼요.

<a href="/files/report-2026.pdf" download>Download the report</a>
<a href="/files/r-8f2a.pdf" download="report.pdf">Download (saved as report.pdf)</a>

download는 페이지와 같은 출처(같은 스킴, 호스트, 포트)의 파일과 data:, blob: URL에서만 동작해요. 다른 출처의 파일이라면 서브도메인이어도 브라우저가 무시하고 일반 링크처럼 파일로 이동해요. 서버는 Content-Disposition: attachment 헤더로 어떤 파일이든 강제로 다운로드시킬 수 있어요.

의미가 통하는 링크 텍스트

스크린 리더 사용자는 링크에서 링크로 이동하며 링크 텍스트만 듣는 경우가 많아요. "여기를 클릭"이나 "더 보기"는 아무것도 알려 주지 않아요.

<!-- Vague: -->
To see our prices, <a href="/pricing">click here</a>.

<!-- Clear: -->
See the <a href="/pricing">pricing plans</a>.

title 속성은 마우스를 올리면 툴팁을 보여 주지만, 터치스크린이나 대부분의 키보드 사용자에게는 보이지 않으니 중요한 내용은 넣지 마세요.

카드 전체를 링크로 만들기

<a>는 블록 콘텐츠를 감쌀 수 있어서 제목, 이미지, 문단을 모두 하나의 링크로 만들 수 있어요. 클릭할 수 있는 카드는 이렇게 만들어요.

display: block을 주면 텍스트뿐 아니라 상자 전체를 클릭할 수 있어요. 스크린 리더가 카드 내용 전체를 링크 이름으로 읽기 때문에 내용은 짧게 유지하세요. 그리고 안에 다른 링크나 버튼을 절대 넣지 마세요. 인터랙티브 요소는 <a> 안에 중첩할 수 없어요.

a 태그의 다른 속성

속성하는 일
href목적지. 없으면 <a>는 링크가 아님
target어디에서 열지. target="_blank"는 새 탭에서 열어요. 새 탭에서 링크 열기 참고
rel대상과의 관계: noopener, nofollow, sponsored, ugc
download파일을 열지 않고 저장
hreflang링크된 페이지의 언어(힌트)
referrerpolicy현재 URL 중 얼마만큼을 리퍼러로 보낼지

자주 하는 실수

  • 외부 URL에 스킴이 없음. href="www.site.com"은 상대 경로예요. https://를 쓰세요.
  • JavaScript 동작에 <a href="#">를 씀. 맨 위로 스크롤하고 URL에 #가 붙어요. 클릭해도 어디로 가지 않는다면 <button>을 쓰세요.
  • 링크 안의 링크, 또는 링크 안의 버튼. 둘 다 올바르지 않은 HTML이에요. 두 번째 <a>가 나오면 파서가 첫 번째를 일찍 닫고, 링크 안의 버튼을 클릭하면 대상이 분명하지 않아요.
  • 파일 이름에 공백이 있음. href="my file.html"은 브라우저가 공백을 인코딩해서 대개 동작하지만, my-file.html로 쓰면 고민할 필요가 없어요.
  • 링크 텍스트로 "여기를 클릭"을 씀. 대신 목적지를 설명하세요.
  • id의 대소문자가 다름. #Pricing과 id="pricing"은 서로 달라요.

자주 묻는 질문

HTML에서 링크는 어떻게 만드나요?

앵커 요소를 쓰세요. <a href="https://example.com">Example</a>처럼요. href는 목적지이고, 태그 사이의 텍스트가 독자가 클릭하는 부분이에요.

href는 무엇의 약자인가요?

Hypertext reference(하이퍼텍스트 참조)예요. 링크가 가리키는 URL을 담아요. 전체 주소, /about 같은 같은 사이트의 경로, #pricing 같은 페이지의 특정 섹션, mailto: 같은 스킴이 들어가요.

페이지의 특정 위치로 링크하려면 어떻게 하나요?

대상 요소에 id를 주고, 해시로 링크하세요. <h2 id="faq">FAQ</h2>와 <a href="#faq">FAQ</a>처럼요. 다른 페이지에서는 URL 뒤에 해시를 붙이세요. <a href="/help#faq">처럼요.

www로 시작하는 주소를 쓰면 왜 엉뚱한 페이지로 가나요?

https://가 없으면 브라우저는 www.example.com을 내 사이트의 상대 경로로 취급해서, 링크가 yoursite.com/www.example.com 같은 곳으로 가요. 외부 링크에는 항상 스킴을 쓰세요. href="https://www.example.com"처럼요.

a 태그 안에 div를 넣어도 되나요?

네. HTML5에서는 <a>가 <div>, 제목, 문단 같은 블록 콘텐츠를 감쌀 수 있고, 카드 전체를 링크로 만들 때 이렇게 해요. 다만 다른 링크, 버튼, 그 밖의 인터랙티브 요소는 담을 수 없어요.

Coddy programming languages illustration

Coddy로 코딩 배우기

시작하기