<img>: 이미지 삽입 요소

HTML <img> 요소는 문서에 이미지를 넣습니다.

시도해보기

위의 예제를 통해 <img> 요소의 사용법을 알 수 있습니다.

  • src 특성은 필수이며, 포함하고자 하는 이미지로의 경로를 지정합니다.
  • alt 특성은 이미지의 텍스트 설명이며 필수는 아니지만, 스크린 리더가 alt의 값을 읽어 사용자에게 이미지를 설명하므로, 접근성 차원에서 매우 유용합니다. 또한 네트워크 오류, 콘텐츠 차단, 죽은 링크 등 이미지를 표시할 수 없는 경우에도 이 속성의 값을 대신 보여줍니다.

다양한 목적을 위한 많은 수의 속성이 더 존재합니다.

지원하는 이미지 형식

HTML 표준은 지원해야 하는 이미지 형식을 명시하고 있지 않으므로, 각각의 사용자 에이전트는 서로 다른 형식을 지원합니다. 전체 목록은 웹 브라우저가 지원하는 이미지 형식 안내서 (en-US)를 참고하세요.

이미지를 가져올 수 없을 때

이미지를 불러오거나 그릴 때 오류가 발생했고, onerror 속성에 오류 처리기를 등록했다면 error (en-US) 이벤트와 함께 처리기를 호출합니다. 오류는 다양한 상황에서 발생할 수 있는데, 그 중 일부 원인은 다음과 같습니다.

  • src 속성이 비었거나 null임.
  • src의 URL이 현재 사용자가 보는 페이지의 URL과 같음.
  • 지정한 이미지가 손상돼 불러올 수 없음.
  • 이미지의 메타데이터가 손상돼 원본 크기를 알아낼 수 없고, <img> 요소의 속성에도 크기를 지정하지 않음.
  • 사용자 에이전트가 지원하지 않는 이미지 형식임.

특성

이 요소는 전역 특성을 포함합니다.

alt

이미지의 대체 텍스트 설명.

참고: 브라우저가 항상 이미지를 표시하는건 아닙니다. 예를 들어,

  • 비 시각적 브라우저 (시각 장애인이 사용하는 일부 브라우저 등)
  • 사용자가 이미지 불러오기 거부 (대역폭 절약, 개인정보 보호 등)
  • 유효하지 않은 이미지거나, 지원하지 않는 형식

위와 같은 경우 브라우저가 이미지를 alt 특성의 텍스트로 대체할 수 있습니다. 그러므로 가능한 경우 alt 특성에 항상 유용한 값을 제공해야 합니다.

alt 특성을 아예 지정하지 않은 경우 이미지가 콘텐츠의 중요 부분이나 텍스트로 표현할 수 없음을 의미합니다. 빈 문자열(alt="")을 사용한 경우, 이미지가 콘텐츠의 중요 부분이 아니므로(장식 또는 추적용 픽셀 등), 비 시각적 브라우저가 렌더링을 하지 않아도 된다는 의미입니다. 시각적 브라우저도 alt 특성이 비어있을 경우 깨진 이미지 아이콘을 표시하지 않습니다.

이미지를 텍스트로서 복사-붙여넣기할 때와, 이미지 링크를 북마크 할 때도 alt의 값을 사용합니다.

crossorigin

CORS를 사용해 지정한 이미지 파일을 가져와야 하는지의 여부. 교차 출처 활성화 리소스<canvas> 요소에 사용해도 캔버스를 "오염"시키지 않습니다. 가능한 값은 다음과 같습니다.

anonymous

자격 증명 없이 교차 출처 요청을 전송합니다. 즉, Origin HTTP 헤더를 쿠키, X.509 인증서, HTTP Basic 인증 없이 전송합니다. 서버에서 Access-Control-Allow-Origin HTTP 헤더를 지정하지 않음으로써 요청 출처 사이트에 자격 증명을 보내지 않는다면 이미지는 "오염"되고, 사용처가 제한됩니다.

use-credentials

자격 증명과 함께 교차 출처 요청을 전송합니다. 즉, Origin HTTP 헤더를 쿠키, X 509 인증서, 또는 HTTP Basic 이증과 함께 전송합니다. 서버에서 Access-Control-Allow-Credentials HTTP 헤더를 통한 자격 증명을 요청 출처 사이트에 보내지 않는다면 이미지는 "오염"되고, 사용처가 제한됩니다.

특성이 존재하지 않으면 리소스를 CORS 요청 없이(Origin HTTP 헤더 없이) 가져오므로, <canvas>를 오염시키게 됩니다. 유효하지 않은 값의 경우 anonymous 키워드를 사용한 것으로 간주합니다.

decoding

이미지 디코딩에 관해 브라우저에 제공할 힌트. 가능한 값은 다음과 같습니다.

sync

다른 콘텐츠와 함께 표시하기 위해 이미지를 동기적으로 디코딩 합니다.

async

다른 콘텐츠의 표시 지연을 피하기 위해 이미지를 비동기적으로 디코딩 합니다.

auto

선호하는 디코딩 모드가 없음을 나타내는 기본값입니다. 사용자에게 제일 적절한 값을 브라우저가 결정합니다.

height

픽셀 단위의 이미지의 고유 크기. 단위 없는 정수여야 합니다.

importance Experimental

리소스의 상대적인 다운로드 중요도. 가능한 값은 다음과 같습니다.

auto: 설정 안함. 브라우저가 자체 휴리스틱을 사용해 이미지의 우선순위를 결정합니다.

high: 이미지가 높은 우선순위를 지님.

low: 이미지가 낮은 우선순위를 지님.

intrinsicsize 지원이 중단되었습니다

This attribute tells the browser to ignore the actual intrinsic size of the image and pretend it's the size specified in the attribute. Specifically, the image would raster at these dimensions and naturalWidth/naturalHeight on images would return the values specified in this attribute. Explainer, examples

ismap

이미지가 서버 사이드 맵의 일부인지 나타냄. 서버 사이드 맵에 속하는 경우, 사용자가 이미지에서 클릭한 위치를 서버로 전송합니다.

참고: 포인팅 장치가 없는 사용자도 갈 수 있는 대체 목적지를 제공하기 위해, ismap&#x3C;img> 요소가 유효한 href 특성을 가진 <a> 요소의 자손인 경우에만 사용 가능합니다.

loading

브라우저가 이미지를 불러올 때 사용할 방식을 지정합니다.

  • eager: 뷰포트 안에 위치하는지 여부에 상관하지 않고 이미지를 즉시 불러옵니다. (기본값)
  • lazy: 이미지가 뷰포트의 일정 거리 안으로 들어와야 불러옵니다. 거리는 브라우저가 정의합니다. 이미지를 보게 될 것으로 충분히 예상 가능한 상황에만 불러옴으로써, 불필요하게 네트워크와 저장소 대역폭을 낭비하지 않을 수 있습니다. 또한 일반적인 사용처에서는 대개 성능을 향상할 수 있습니다.
referrerpolicy Experimental

리소스를 가져올 때 사용할 리퍼러를 나타내는 문자열.

  • no-referrer: Referer 헤더를 전송하지 않습니다.
  • no-referrer-when-downgrade: TLS(HTTPS) 지원을 하지 않는 출처에 대해서는 Referer 헤더를 전송하지 않습니다. 따로 지정하지 않은 경우 사용하는 기본 정책입니다.
  • origin: Referer 헤더가 요청 출처의 스킴, 호스트, 포트를 포함합니다.
  • origin-when-cross-origin: 다른 출처로 요청할 땐 리퍼럴 데이터를 스킴, 호스트, 포트로 제한합니다. 동일 출처로 요청할 땐 전체 경로와 쿼리 문자열도 포함합니다.
  • unsafe-url: Referrer 헤더가 항상 출처, 경로, 쿼리 문자열을 포함합니다. 하지만 프래그먼트, 비밀번호, 사용자 이름은 포함하지 않습니다. TLS로 보호받는 리소스에서 그렇지 않은 출처로 정보를 누출할 수 있으므로 안전하지 않습니다.
sizes

소스 크기를 나타내는, 쉼표로 구분한 하나 이상의 문자열. 각각의 문자열은 다음 구성요소로 이루어집니다.

  • 미디어 조건. 마지막 항목에서는 생략해야 합니다.
  • 소스 크기 값.

미디어 조건은 이미지의 속성이 아니라** 뷰포트** 속성을 가리킵니다. 예를 들어, (max-height: 500px) 1000px은 1000px 너비의 소스를 사용하려면 뷰포트가 500px 이하여야 한다는 뜻입니다.

소스 크기는 의도한 이미지 표시 크기를 지정합니다. 사용자 에이전트는 현재 소스 크기를 사용해, 너비(w) 서술자를 사용한 srcset 특성의 소스 중 하나를 선택합니다. 선택한 소스 크기는 이미지의 고유 크기(CSS 스타일을 입히지 않은 경우 이미지의 표시 크기)에 영향을 줍니다. srcset이 비어있거나 너비 서술자를 사용하지 않은 경우, sizes 특성은 아무 효과도 없습니다.

src

이미지의 URL. 필수 사항입니다. srcset을 지원하는 브라우저srcset에 픽셀 밀도 1xw 서술자가 없는 경우, src는 픽셀 밀도 1x의 이미지 후보로 취급합니다.

srcset

사용자 에이전트가 사용할 수 있는 이미지 소스의 후보. 쉼표로 구분하는 한 개 이상의 문자열 목록입니다. 각각의 문자열은 다음 구성요소로 이루어집니다.

  • 이미지의 URL.
  • 선택적으로, 공백과 함께 그 뒤를 잇는...
  • 너비 서술자(양의 정수와 바로 뒤의 'w' 문자). 너비 서술자의 값을 sizes 특성으로 지정한 소스 크기로 나눠서 픽셀 밀도를 구합니다.
  • 픽셀 밀도 서술자(양의 실수와 바로 뒤의 'x' 문자).

서술자를 포함하지 않은 경우 기본값인 1x로 간주합니다.

같은 srcset 특성에 너비와 픽셀 밀도 서술자를 함께 사용하거나, 동일한 서술자를 두 개 이상 사용하는건 유효하지 않습니다.

사용자 에이전트 스스로 가능한 소스 중 하나를 선택합니다. 따라서 사용자 에이전트는 사용자의 개인 설정 또는 대역폭 상황에 따라 선택을 조절할 수 있는 상당한 여지를 가집니다. 반응형 이미지 자습서를 방문해 예제를 살펴보세요.

width

이미지의 픽셀 기준 고유 너비. 단위 없는 정수여야 합니다.

usemap

요소와 연결할 이미지 맵 (en-US)의 프래그먼트.

참고: <img> 요소가 <a> 또는 <button> 요소의 자손이면 사용할 수 없습니다.

Deprecated attributes

align 지원이 중단되었습니다

Aligns the image with its surrounding context. Use the float and/or vertical-align CSS properties instead of this attribute. Allowed values:

top

Equivalent to vertical-align: top or vertical-align: text-top

middle

Equivalent to vertical-align: -moz-middle-with-baseline

bottom

The default, equivalent to vertical-align: unset or vertical-align: initial

left

Equivalent to float: left

Equivalent to float: right

border 지원이 중단되었습니다

The width of a border around the image. Use the border CSS property instead.

hspace 지원이 중단되었습니다

The number of pixels of white space on the left and right of the image. Use the margin CSS property instead.

longdesc 지원이 중단되었습니다

A link to a more detailed description of the image. Possible values are a URL or an element id.

참고: This attribute is mentioned in the latest W3C version, HTML 5.2, but has been removed from the WHATWG's HTML Living Standard. It has an uncertain future; authors should use a WAI-ARIA alternative such as aria-describedby or aria-details.

name 지원이 중단되었습니다

A name for the element. Use the id attribute instead.

vspace 지원이 중단되었습니다

The number of pixels of white space above and below the image. Use the margin CSS property instead.

CSS 스타일링

<img>대체 요소입니다. 기본적으로 display (en-US)inline이나, 기본 크기는 내장한 이미지의 고유 크기로 정해지므로 마치 inline-block처럼 보입니다. border/border-radius, padding/margin, width, height 등의 속성을 이미지에 지정할 수 있습니다.

<img>는 기준선을 갖지 않으므로, vertical-align: baseline을 지정한 인라인 서식 맥락에서는 이미지의 아래쪽 모서리가 텍스트 기준선으로 가게 됩니다.

요소 박스 내의 이미지 위치는 object-position 속성으로 바꿀 수 있습니다. 크기는 object-fit 속성을 통해 요소 크기에 맞출지, 요소를 채울지 등을 지정할 수 있습니다.

이미지는 고유 너비와 높이를 가질 수 있지만, 일부 유형의 이미지는 그렇지 않습니다. 예를 들어, SVG 요소는 루트 <svg> (en-US) 요소에 widthheight가 없는 경우 고유 크기를 가지지 않습니다.

예제

보조 텍스트

페이지에 이미지를 삽입하고, 접근성을 높이기 위해 대체 텍스트를 제공하는 간단한 예제입니다.

html
<img src="favicon144.png" alt="MDN logo" />

이미지 링크

이 예제는 이전 코드에 더해 이미지를 링크로 바꾸는 법을 보입니다. 단순히 <img> 태그를 <a> 안에 넣기만 하면 됩니다. 다만 고려할 점 하나는, 해당 링크가 가리키는 곳을 설명하는 대체 텍스트를 포함해야 한다는 것입니다.

html
<a href="https://developer.mozilla.org">
  <img src="favicon144.png" alt="Visit the MDN site" />
</a>

srcset 특성 사용하기

이번 예제에서는 srcset 특성에 고해상도 버전 로고를 추가했습니다. 그러면 고해상도 장치에서는 일반 src 이미지 대신 고해상도 이미지를 사용합니다. srcset 특성을 지원하는 사용자 에이전트src 특성을 srcset 1x 로 간주합니다.

html
<img src="favicon72.png" alt="MDN logo" srcset="favicon144.png 2x" />

srcsetsizes 특성 사용하기

srcset를 지원하는 사용자 에이전트는, srcsetw 서술자를 사용한 경우 src 특성을 무시합니다. 다음 코드는 미디어 조건 (max-width: 600px)을 만족할 때 200px 너비의 이미지를 불러오고, 그 외의 경우엔 다른 이미지(400px)를 불러옵니다.

html
<img
  src="clock-demo-200px.png"
  alt="Clock"
  srcset="clock-demo-200px.png 200w, clock-demo-400px.png 400w"
  sizes="(min-width: 600px) 200px, 50vw" />

참고: 직접 창 크기를 조절하면서 이미지의 변화를 관측하려면 별도 페이지를 방문하세요.

보안 및 개인정보 고려사항

<img> 요소를 사용하는 것에는 문제가 없으나, 의도치 않게 사용자 개인정보와 보안에 악영향을 줄 수 있습니다. Referer 헤더: 개인정보 및 보안 고려사항 문서를 방문해 더 많은 정보를 알아보세요.

접근성 고려사항

적합한 대체 설명 작성

alt 특성의 값은 이미지 콘텐츠를 간단하고 명료하게 설명해야 합니다. 그러나 이미지의 존재 여부나, 이미지 파일의 이름을 나타내서는 안됩니다. 이미지를 텍스트로 설명할 방법이 없어서 의도적으로 alt를 지정하지 않은 경우, 해당 이미지가 나타내려는 바를 알려줄 수 있는 다른 방법을 고려해보세요.

부적절

html
<img alt="이미지" src="penguin.jpg" />

적절

html
<img alt="해변에 서있는 바위뛰기펭귄." src="penguin.jpg" />

일부 스크린 리더는 alt 특성을 가지지 않는 이미지를 보면 파일 이름을 표현하는 경우가 있는데, 이 때 파일의 이름이 이미지의 콘텐츠를 설명하지 않는다면 사용자가 혼란스러울 수 있습니다.

title 특성

title 특성은 alt 특성을 적합하게 대체할 수 없습니다. 또한, alt의 값을 title에도 반복하는 것을 피해야 합니다. 같은 값을 지정할 경우 일부 스크린 리더가 설명을 두 번씩 읽게 되므로 사용자가 혼란스러울 수 있습니다.

title 요소를 사용해 alt 설명에 대한 부연 설명을 제공해서도 안됩니다. 이미지가 설명을 필요로 하는 경우 <figure><figcaption> 요소를 사용하세요.

title 특성은 보통 툴팁, 즉 사용자가 커서를 이미지 위에 올리고 가만히 있으면 짧은 시간 뒤에 나타나는 형태로 표현합니다. 따라서 추가 정보를 제공할 수는 있겠으나 터치 화면, 또는 키보드만 사용하는 경우도 존재하므로 사용자가 툴팁을 볼 수 있을 것이라고 기대해서는 안됩니다. 사용자에게 많이 중요한 정보를 포함해야 하면 title 특성 대신 위에 명시한 다른 방법을 사용하세요.

기술 요약

콘텐츠 카테고리 플로우 콘텐츠, 구문 콘텐츠, 내장 콘텐츠, 뚜렷한 콘텐츠. `usemap` 특성을 가진 경우 대화형 콘텐츠.
가능한 콘텐츠 없음. 빈 요소입니다.
태그 생략 여는 태그는 필수입니다. 닫는 태그는 존재해선 안됩니다.
가능한 부모 요소 내장 콘텐츠를 허용하는 모든 요소.
가능한 ARIA 역할 모두
DOM 인터페이스 HTMLImageElement (en-US)

명세

Specification
HTML Standard
# the-img-element

브라우저 호환성

BCD tables only load in the browser

같이 보기