AD JB Toolbox 01

HTML 강좌 / 링크(link)

HTML 링크는 a 요소의 href 속성에 이동할 주소를 지정해 만듭니다. 주소에는 다른 웹페이지, 같은 사이트의 파일, 현재 문서의 특정 위치 또는 이메일 주소를 넣을 수 있습니다. 링크 문구는 이동할 내용을 미리 알 수 있게 작성하는 것이 좋습니다.

a와 href로 기본 링크 만들기

a 요소로 링크가 될 문구를 감싸고 href에 목적지 주소를 넣습니다. 다음 링크를 누르면 Coding Factory의 HTML 강좌 목록 글로 이동합니다.

<a href="https://www.codingfactory.net/10225">HTML 목록 작성 방법</a>

화면에 보이는 ‘HTML 목록 작성 방법’은 링크 문구이고, href의 URL은 이동할 주소입니다. href가 없는 a는 일반적인 이동 링크가 아니며, 목적지 없이 href="#"만 넣으면 현재 페이지 맨 위로 이동하는 등 예상하지 못한 동작을 만들 수 있습니다.

절대경로와 상대경로 구분하기

https://로 시작하는 주소는 목적지의 도메인까지 적은 절대 URL입니다. 같은 사이트의 파일을 연결할 때는 현재 문서나 사이트의 루트를 기준으로 한 상대 URL도 쓸 수 있습니다.

다음의 about.html과 ../contact.html은 현재 Coding Factory에 있는 페이지가 아니라, 아래처럼 파일을 배치했다고 가정한 연습용 경로입니다. lessons/index.html에서 링크를 작성합니다.

site/
  contact.html
  lessons/
    index.html
    about.html
<a href="https://www.codingfactory.net/10225">전체 주소로 이동</a>
<a href="about.html">현재 파일과 같은 폴더의 소개 페이지</a>
<a href="../contact.html">한 단계 위 폴더의 연락처 페이지</a>
<a href="/10225">사이트 루트의 HTML 목록 글</a>

about.html은 현재 문서의 위치를 기준으로 해석하지만, /10225처럼 슬래시로 시작하는 경로는 사이트의 루트를 기준으로 해석합니다. 로컬 file:// 파일에서 시작하는 슬래시와 서버에서 시작하는 슬래시는 기준이 다를 수 있으므로, 실제 배포 경로에서 링크를 다시 확인하세요.

문서의 특정 위치로 이동하기

같은 문서 안에서 이동하려면 목적지 요소에 고유한 id를 지정하고, 링크의 href에 #과 그 값을 적습니다.

<a href="#contact">연락처로 이동</a>

<h2 id="contact">연락처</h2>
<p>문의 방법을 안내합니다.</p>

다른 문서 안의 위치로 이동한다면 문서 URL 뒤에 #contact를 붙입니다. 예를 들어 about.html#contact는 about.html 안의 id="contact" 요소를 가리킵니다. 같은 페이지에서 id를 중복해서 쓰지 않습니다.

이메일 링크와 새 탭 링크 만들기

mailto:로 시작하는 주소는 사용자의 메일 앱에서 새 메시지를 작성하도록 요청합니다. 메일 앱이 설정되지 않았다면 원하는 결과가 나오지 않을 수 있습니다.

<a href="mailto:hello@example.com">이메일 보내기</a>

외부 사이트를 새 탭에서 열려면 target="_blank"를 사용하고, 사이트의 링크 정책에 맞게 rel="noopener noreferrer"도 지정합니다.

<a href="https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/a"
   target="_blank" rel="noopener noreferrer">MDN의 a 요소 설명</a>

새 탭이 꼭 필요한지는 독자의 작업 흐름에 따라 판단합니다. 새 탭에서 열리는 링크라면 문구나 주변 설명으로 그 동작을 알리는 것도 도움이 됩니다.

파일 다운로드 링크의 범위

download 속성은 링크한 파일을 내려받도록 브라우저에 요청합니다. 예를 들어 같은 사이트에 올린 다음 이미지 파일에 사용할 수 있습니다.

<a href="/wp-content/uploads/html-image-sample-lake-tree-1600-v1.webp" download>예제 이미지 내려받기</a>

download는 같은 출처의 URL 또는 blob:, data: URL에 사용할 수 있습니다. 다른 사이트의 일반적인 URL에 붙여 다운로드를 강제할 수는 없습니다. 같은 출처의 파일이라도 실제 처리 방식은 브라우저 설정과 서버 응답에 따라 달라질 수 있습니다.

링크를 확인할 때 살펴볼 점

  • ‘여기’보다 ‘HTML 목록 작성 방법’처럼 목적지를 설명하는 문구를 사용합니다.
  • 상대경로는 현재 문서의 위치와 배포 후 사이트 경로를 기준으로 확인합니다.
  • #id 링크는 목적지의 id가 정확히 일치하는지 확인합니다.
  • 이메일 링크와 다운로드 링크는 브라우저·사용자 환경에 따라 동작이 달라질 수 있음을 고려합니다.

URL 형식과 a 요소의 속성은 MDN의 HTML 링크 요소 문서에서 확인할 수 있습니다.

같은 카테고리의 다른 글
HTML 강좌 / 읽기 쉬운 표 만들기: caption, th, scope, 셀 병합

HTML 강좌 / 읽기 쉬운 표 만들기: caption, th, scope, 셀 병합

caption과 제목 셀의 scope로 표의 관계를 분명히 하고, colspan·rowspan으로 셀을 병합할 때 주의할 점을 설명합니다.

HTML 강좌 / textarea, select, option, button 사용하기

HTML 강좌 / textarea, select, option, button 사용하기

여러 줄 입력, 선택 목록, 양식 버튼을 만드는 요소의 역할과 값이 제출되는 방식을 예제로 설명합니다.

HTML 강좌 / input 유형 선택하기: 이메일·숫자·날짜·체크박스·라디오

HTML 강좌 / input 유형 선택하기: 이메일·숫자·날짜·체크박스·라디오

입력 목적에 맞는 input type을 고르고 체크박스와 라디오 버튼의 선택·제출 동작을 구분하는 방법을 설명합니다.

HTML 강좌 / 양식에 안내 문구 추가하기

HTML 강좌 / 양식에 안내 문구 추가하기

HTML 양식에서 label, placeholder, value의 역할을 구분하고 안내 문구를 넣는 방법을 설명합니다. input·textarea 예제와 필수 입력 검사, 빈 값의 제출 동작을 함께 확인할 수 있습니다.

HTML 강좌 / div와 span은 언제 사용할까?

HTML 강좌 / div와 span은 언제 사용할까?

div와 span의 차이와 사용 기준을 설명하고, 의미 요소가 없는 경우에만 묶음 요소를 쓰는 예제를 보여 줍니다.

HTML / Tutorial / 연속된 공백 넣는 방법

HTML / Tutorial / 연속된 공백 넣는 방법

HTML에서 연속된 공백은 하나의 공백으로 처리합니다. 소스 코드에서 여러 칸을 띄어써도 브라우저에서는 한 칸을 띄어쓴 것으로 표현됩니다. 연속된 공백을 넣고 싶다면 특수 문자  를 사용합니다.

HTML 강좌 / 이미지 넣기: img, alt, 크기

HTML 강좌 / 이미지 넣기: img, alt, 크기

HTML img 요소로 이미지를 넣고 alt 대체 텍스트와 width·height를 설정하는 방법을 설명합니다. 실제 예제 이미지로 경로와 크기 문제도 확인할 수 있습니다.

HTML 강좌 / 목록 - ol, ul, dl, 중첩 목록

HTML 강좌 / 목록 - ol, ul, dl, 중첩 목록

HTML 목록은 순서가 중요하면 ol, 중요하지 않으면 ul, 이름과 설명이 짝을 이루면 dl로 작성합니다. 세 목록의 구조와 번호 지정, 중첩 방법을 실행 가능한 예제로 살펴봅니다.

HTML 강좌 / 텍스트에 의미 부여하기

HTML 강좌 / 텍스트에 의미 부여하기

HTML의 em, strong, q, blockquote, abbr, code, kbd를 상황에 맞게 쓰는 방법을 예제로 설명합니다. 글자의 모양이 아니라 텍스트의 의미를 표시하는 기준을 익힐 수 있습니다.

HTML 강좌 / label과 input으로 입력 필드 만들기

HTML 강좌 / label과 input으로 입력 필드 만들기

label의 for와 input의 id를 연결하는 방법, name의 제출 역할, placeholder가 레이블을 대신할 수 없는 이유를 설명합니다.