<img>: 이미지 삽입 요소
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.
HTML <img>
요소는 문서에 이미지를 넣습니다.
시도해보기
위의 예제를 통해 <img>
요소의 사용법을 알 수 있습니다.
src
특성은 필수이며, 포함하고자 하는 이미지로의 경로를 지정합니다.alt
특성은 이미지의 텍스트 설명이며 필수는 아니지만, 스크린 리더가alt
의 값을 읽어 사용자에게 이미지를 설명하므로, 접근성 차원에서 매우 유용합니다. 또한 네트워크 오류, 콘텐츠 차단, 죽은 링크 등 이미지를 표시할 수 없는 경우에도 이 속성의 값을 대신 보여줍니다.
다양한 목적을 위한 많은 수의 속성이 더 존재합니다.
- Referrer CORS control for security and privacy: see
crossorigin
andreferrerpolicy
. - Setting an intrinsic size using
width
,height
, andintrinsicsize
: this sets the space taken up by an image to ensure the page layout is stable before it loads. - Responsive image hints with
sizes
andsrcset
(see also the<picture>
element and our Responsive images tutorial).
지원하는 이미지 형식
HTML 표준은 지원해야 하는 이미지 형식을 명시하고 있지 않으므로, 각각의 사용자 에이전트는 서로 다른 형식을 지원합니다. 전체 목록은 웹 브라우저가 지원하는 이미지 형식 안내서를 참고하세요.
이미지를 가져올 수 없을 때
특성
이 요소는 전역 특성을 포함합니다.
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
-
이미지가 서버 사이드 맵의 일부인지 나타냄. 서버 사이드 맵에 속하는 경우, 사용자가 이미지에서 클릭한 위치를 서버로 전송합니다.
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
에 픽셀 밀도1x
와w
서술자가 없는 경우,src
는 픽셀 밀도1x
의 이미지 후보로 취급합니다. srcset
-
사용자 에이전트가 사용할 수 있는 이미지 소스의 후보. 쉼표로 구분하는 한 개 이상의 문자열 목록입니다. 각각의 문자열은 다음 구성요소로 이루어집니다.
- 이미지의 URL.
- 선택적으로, 공백과 함께 그 뒤를 잇는...
- 너비 서술자(양의 정수와 바로 뒤의 '
w
' 문자). 너비 서술자의 값을sizes
특성으로 지정한 소스 크기로 나눠서 픽셀 밀도를 구합니다. - 픽셀 밀도 서술자(양의 실수와 바로 뒤의 '
x
' 문자).
서술자를 포함하지 않은 경우 기본값인
1x
로 간주합니다.같은
srcset
특성에 너비와 픽셀 밀도 서술자를 함께 사용하거나, 동일한 서술자를 두 개 이상 사용하는건 유효하지 않습니다.사용자 에이전트 스스로 가능한 소스 중 하나를 선택합니다. 따라서 사용자 에이전트는 사용자의 개인 설정 또는 대역폭 상황에 따라 선택을 조절할 수 있는 상당한 여지를 가집니다. 반응형 이미지 자습서를 방문해 예제를 살펴보세요.
width
-
이미지의 픽셀 기준 고유 너비. 단위 없는 정수여야 합니다.
usemap
-
요소와 연결할 이미지 맵의 프래그먼트.
Deprecated attributes
align
지원이 중단되었습니다-
Aligns the image with its surrounding context. Use the
float
and/orvertical-align
CSS properties instead of this attribute. Allowed values: 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
oraria-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
는 inline
이나, 기본 크기는 내장한 이미지의 고유 크기로 정해지므로 마치 inline-block
처럼 보입니다. border
/border-radius
, padding
/margin
, width
, height
등의 속성을 이미지에 지정할 수 있습니다.
<img>
는 기준선을 갖지 않으므로, vertical-align
: baseline
을 지정한 인라인 서식 맥락에서는 이미지의 아래쪽 모서리가 텍스트 기준선으로 가게 됩니다.
요소 박스 내의 이미지 위치는 object-position
속성으로 바꿀 수 있습니다. 크기는 object-fit
속성을 통해 요소 크기에 맞출지, 요소를 채울지 등을 지정할 수 있습니다.
이미지는 고유 너비와 높이를 가질 수 있지만, 일부 유형의 이미지는 그렇지 않습니다. 예를 들어, SVG 요소는 루트 <svg>
요소에 width
와 height
가 없는 경우 고유 크기를 가지지 않습니다.
예제
보조 텍스트
페이지에 이미지를 삽입하고, 접근성을 높이기 위해 대체 텍스트를 제공하는 간단한 예제입니다.
<img src="favicon144.png" alt="MDN logo" />
이미지 링크
이 예제는 이전 코드에 더해 이미지를 링크로 바꾸는 법을 보입니다. 단순히 <img>
태그를 <a>
안에 넣기만 하면 됩니다. 다만 고려할 점 하나는, 해당 링크가 가리키는 곳을 설명하는 대체 텍스트를 포함해야 한다는 것입니다.
<a href="https://developer.mozilla.org">
<img src="favicon144.png" alt="Visit the MDN site" />
</a>
srcset
특성 사용하기
srcset
과 sizes
특성 사용하기
srcset
를 지원하는 사용자 에이전트는, srcset
에 w
서술자를 사용한 경우 src
특성을 무시합니다. 다음 코드는 미디어 조건 (max-width: 600px)
을 만족할 때 200px 너비의 이미지를 불러오고, 그 외의 경우엔 다른 이미지(400px)를 불러옵니다.
<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
를 지정하지 않은 경우, 해당 이미지가 나타내려는 바를 알려줄 수 있는 다른 방법을 고려해보세요.
부적절
<img alt="이미지" src="penguin.jpg" />
적절
<img alt="해변에 서있는 바위뛰기펭귄." src="penguin.jpg" />
일부 스크린 리더는 alt
특성을 가지지 않는 이미지를 보면 파일 이름을 표현하는 경우가 있는데, 이 때 파일의 이름이 이미지의 콘텐츠를 설명하지 않는다면 사용자가 혼란스러울 수 있습니다.
title
특성
title
특성은 alt
특성을 적합하게 대체할 수 없습니다. 또한, alt
의 값을 title
에도 반복하는 것을 피해야 합니다. 같은 값을 지정할 경우 일부 스크린 리더가 설명을 두 번씩 읽게 되므로 사용자가 혼란스러울 수 있습니다.
title
요소를 사용해 alt
설명에 대한 부연 설명을 제공해서도 안됩니다. 이미지가 설명을 필요로 하는 경우 <figure>
와 <figcaption>
요소를 사용하세요.
title
특성은 보통 툴팁, 즉 사용자가 커서를 이미지 위에 올리고 가만히 있으면 짧은 시간 뒤에 나타나는 형태로 표현합니다. 따라서 추가 정보를 제공할 수는 있겠으나 터치 화면, 또는 키보드만 사용하는 경우도 존재하므로 사용자가 툴팁을 볼 수 있을 것이라고 기대해서는 안됩니다. 사용자에게 많이 중요한 정보를 포함해야 하면 title
특성 대신 위에 명시한 다른 방법을 사용하세요.
기술 요약
명세
Specification |
---|
HTML Standard # the-img-element |
브라우저 호환성
BCD tables only load in the browser
같이 보기
<picture>
,<object>
,<embed>
요소- 이미지 관련 CSS 속성:
object-fit
,object-position
,image-orientation
,image-rendering
,image-resolution
.