어떤 상황 IMG
에서 CSS와 달리 HTML 태그 를 사용 하여 이미지를 표시하는 것이 더 적합 background-image
합니까?
접근성, 브라우저 지원, 동적 컨텐츠 또는 모든 종류의 기술적 한계 또는 사용성 원칙이 요인에 포함될 수 있습니다.
어떤 상황 IMG
에서 CSS와 달리 HTML 태그 를 사용 하여 이미지를 표시하는 것이 더 적합 background-image
합니까?
접근성, 브라우저 지원, 동적 컨텐츠 또는 모든 종류의 기술적 한계 또는 사용성 원칙이 요인에 포함될 수 있습니다.
답변:
IMG
사람들 이 페이지를 인쇄 하도록하고 이미지가 기본적으로 포함되도록 하려면 사용하십시오 . — JayTeeIMG
( alt
텍스트 와 함께 )를 사용하십시오 . 이를 통해 화면 판독기를 포함한 모든 사용자 에이전트에서 이미지의 의미를 전달할 수 있습니다.IMG
이미지가 로고나 다이어그램 또는 사람 (사진 사람이 아닌 실제 사람)과 같은 컨텐츠의 일부인 경우 플러스 alt 속성을 사용하십시오 . — sanchothefatIMG
텍스트 크기에 비례하여 이미지를 렌더링하기 위해 브라우저 크기 조정에 의존하는 경우 사용하십시오 .IMG
합니다 .IMG
a와 함께 사용하십시오 . z-index
img
대신에 사용 background-image
하면 배경에서 애니메이션 성능을 크게 향상시킬 수 있습니다.background-image
사람들 이 페이지를 인쇄 하도록하고 이미지가 기본적으로 포함되지 않게 하려면 사용하십시오 . — JayTeebackground-image
와 같이 다운로드 시간을 개선해야하는 경우 사용하십시오 .background-image
CSS 스프라이트와 같이 이미지의 일부만 보이게 하려면 사용하십시오 .background-image
함께 사용하십시오 background-size:cover
.<div class="my-css-page-styles" style="background-image:url(blah.png);"></div>
CSS 스타일 시트에서 스타일을 지정할 수 있지만 배경 이미지가 스타일보다 내용의 문제인 경우 HTML 측면에서 편집하고 있습니다.
그것은 흑백 결정입니다. 이미지가 로고나 다이어그램 또는 사람 (재고 사람이 아닌 실제 사람)과 같은 컨텐츠의 일부인 경우 <img />
tag plus alt 속성 을 사용하십시오 . 다른 모든 것에는 CSS 배경 이미지가 있습니다.
CSS 배경 이미지를 사용하는 다른 시간은 예를 들어 텍스트의 이미지 교체를 할 때입니다. 단락 / 헤더.
아직 아무도 언급하지 않은 것에 놀랐습니다 : CSS transitions .
div
의 배경 이미지를 기본적으로 전환 할 수 있습니다 .
#some_div {
background-image:url(image_1.jpg);
-webkit-transition:background-image 0.5s;
/* Other vendor-prefixed transition properties */
transition:background-image 0.5s;
}
#some_div:hover {
background-image:url(image_2.jpg);
}
이것은 페이드 자바 스크립트 또는 jQuery를 애니메이션의 모든 종류의 저장 <img/>
'들 src
.
MDN 전환에 대한 추가 정보 .
#some_div { transition: opacity 0.5s; }
, #some_div:hover #top_img { opacity: 0; }
위의 답변은 디자인 측면 만 고려합니다. SEO 측면에서 나열하고 있습니다.
사용시기 <img />
alt
하고 title
속성을 지정할 수있는 이미지CSS를 사용하는 경우 background-image
이러한 이유로 인해 사용할 것입니다. 이미지 검색 엔진 최적화의 모범 사례입니다.
브라우저가 항상 기본적으로 배경 이미지를 인쇄하도록 설정되어있는 것은 아닙니다. 사람들이 귀하의 페이지를 인쇄하게하려면 :)
외부 파일에 CSS가 있으면 사이트 전체에서 자주 사용되는 이미지 (예 : 헤더 이미지)를 배경 이미지로 표시하는 것이 편리합니다. 나중에 이미지를 변경할 수 있기 때문입니다.
예를 들어, 다음 HTML이 있다고 가정하십시오.
<div id="headerImage"></div>
... 그리고 CSS :
#headerImage {
width: 200px;
height: 100px;
background: url(Images/headerImage.png) no-repeat;
}
며칠 후 이미지의 위치를 변경합니다. CSS를 업데이트하기 만하면됩니다.
#headerImage {
width: 200px;
height: 100px;
background: url(../resources/images/headerImage.png) no-repeat;
}
그렇지 않으면 프로세스를 자동화하기 위해 서버 측 스크립팅 언어 나 CMS 를 사용하지 않는다고 가정 할 때 모든 HTML 파일에서 src
적절한 <img>
태그 의 속성 을 업데이트해야 합니다 .
또한 배경 이미지는 사용자가 이미지를 저장할 수 없도록하려는 경우에 유용합니다 (이 작업을 수행 할 필요는 없었지만).
sanchothefat의 답변 과 동일 하지만 다른 측면에서. 나는 항상 나 자신에게 묻습니다 : 웹 사이트에서 스타일 시트를 완전히 제거하려면 나머지 요소 는 내용 에만 속합니까? 그렇다면 나는 일을 잘했다.
일부 답변은 시나리오를 지나치게 복잡하게 만듭니다. 이것은 단순한 간단한 상황입니다.
이미지를 배치 할 때마다이 질문에 답하십시오.
콘텐츠의 일부입니까, 디자인의 일부입니까?
당신이 이것에 대답 할 수 없다면, 당신은 무엇을하고 있는지, 무엇을하고 싶은지 모를 것입니다!
또한 "프린터 친화적"이되기를 원하기 때문에 두 가지 기술 외에는 고려하지 마십시오. 또한 CSS를 사용하여 SEO 관점에서 컨텐츠를 숨기지 마십시오. CSS 파일에서 컨텐츠를 관리하는 것을 발견하면 자신을 발로 쐈습니다. 이것은 내용이 무엇인지에 대한 사소한 결정입니다. 다른 모든 측면은 무시해야합니다.
또 다른 두 가지 주장을 덧붙일 것입니다.
IMG의 당신이해야하는 경우 태그는 좋은 크기 조정 이미지를. 예를 들어 원본 이미지가 100 x 100 픽셀이고 80 x 80 픽셀이되도록하려면 img 태그의 CSS 너비와 높이를 설정할 수 있습니다. 배경 이미지를 사용하여이를 수행하는 좋은 방법을 모르겠습니다. 편집 : 이제 background-size
CSS3 속성을 사용하여 배경 이미지로 수행 할 수도 있습니다 .
스프라이트 사이 를 동적으로 전환 해야하는 경우 배경 이미지를 사용하는 것이 좋습니다 . 예를 들어 버튼 이미지가 있고 커서가 요소 위에있을 때 별도의 이미지가 표시되도록하려면 일반 및 호버 스프라이트가 모두 포함 된 배경 이미지를 사용하고 배경 위치를 동적으로 변경할 수 있습니다.
background-size: 80px 80px;
<IMG> 태그 사용의 또 다른 이점은 SEO와 관련이 있습니다. 즉, 이미지 태그의 ALT 속성에 이미지에 대한 추가 정보를 제공 할 수 있지만 CSS를 통해 이미지를 지정할 때 해당 정보를 제공 할 수있는 방법은 없습니다. 이미지 파일 이름 만 검색 엔진에서 색인을 생성 할 수 있습니다. ALT 속성은 CSS 접근법에 비해 <IMG> 태그 SEO 이점을 확실히 제공합니다. 그렇기 때문에 <IMG> 태그를 사용하여 이미지 검색 결과 (예 : Google 이미지 검색)에서 순위를 정할 이미지를 지정하는 것이 좋습니다.
타일 이미지가있는 컨테이너와 같이 필요한 경우에만 배경 이미지를 사용하십시오.
사용하여 주요 총 하나의 이미지는 이 때문이다 검색 엔진 최적화에 대한 더 나은 .
background-image
사용해야 하는 몇 가지 다른 시나리오 :
img
하면 둥근 모서리에서 이미지가 누출됩니다.img { border-radius: 10px; }
border-radius
작동하지 않는 정확한 조건을 기억할 수 없습니다 .
여러 스킨 또는 디자인 버전의 경우 CSS 배경 이미지를 사용하십시오. Javascript를 사용하여 요소 클래스를 동적으로 변경하여 다른 이미지를 렌더링하도록 할 수 있습니다. IMG 태그를 사용하면 더 까다로울 수 있습니다.
기술적 고려 사항은 다음과 같습니다. 이미지가 동적으로 생성됩니까? <img>
CSS 속성을 동적으로 편집하는 것보다 HTML로 태그 를 생성하는 것이 훨씬 쉬운 경향이 있습니다 .
이미지의 크기는 어떻습니까? img 태그를 사용하면 브라우저가 이미지의 크기를 조정합니다. CSS 배경을 사용하면 브라우저가 더 큰 이미지에서 덩어리를 자릅니다.
img 는 이유 때문에 html 태그이므로 사용해야합니다. 물건을 참조하거나 설명하기 위해 사람들은 예를 들어 기사에서.
또한 이미지 에 의미가 있거나 클릭 가능해야하는 경우 img 가 CSS 배경 보다 낫습니다 . 다른 모든 상황에서는 CSS 배경을 사용할 수 있다고 생각 합니다.
그러나 계속 논의해야 할 주제입니다.
프랑스 파리 출신의 웹 학생
추가 할 작은 것만으로, 사용자가 '오른쪽 클릭'및 '이미지 저장'/ '사진 저장'을 할 수있게하려면 img 태그를 사용해야합니다. 따라서 이미지를 리소스로 제공하려는 경우 다른 사람.
배경 이미지를 사용하면 (대부분의 브라우저에서 알고있는 한) 이미지를 직접 저장하는 옵션이 비활성화됩니다.
작은 입력으로, 작은 이미지에서도 반응 형 이미지가 최대 1 분 동안 iPhone의 렌더링 속도를 늦추는 데 문제가 있습니다.
<!-- Was super slow -->
<div class="stuff">
<img src=".." width="100%" />
</div>
그러나 배경 이미지를 사용하도록 전환하면 문제가 사라졌으며 최신 브라우저를 타겟팅하는 경우에만 가능합니다.
IMG
src
html 파일 자체에 있기 때문에 먼저로드 하는 반면 background-image
소스 의 경우 스타일 시트에 언급되므로 스타일 시트가로드 된 후 이미지가로드되어 웹 페이지로드가 지연됩니다.
background-image
일정 시간 후에 CSS를 새로 고치는 것처럼 보입니다 . 여러 개의 탭을 연 경우 일정 시간 후에 탭으로 돌아 가면 CSS 배경이 잠시 비어 있습니다.
다른 background-image PRO : <ul>
/ <ol>
리스트의 배경 이미지 .
배경 이미지가 전체 디자인의 일부이고 여러 페이지에 반복되는 경우 배경 이미지를 사용하십시오. 바람직하게는 최적화를위한 배경 스프라이트 형태로 제공된다.
기사, 사람 및 Google 이미지에 추가 할 가치가있는 중요한 이미지의 특정 이미지와 같이 전체 디자인에 포함되지 않고 한 번만 배치되는 모든 이미지에 태그를 사용하십시오 .
** <img>
태그 에 포함 된 유일한 반복 이미지 는 사이트 / 회사 로고입니다. 사람들이 클릭하면 홈페이지로 이동하는 경향이 있으므로 <a>
태그로 묶습니다 .