IMGとCSSの背景画像を使用する場合


777

IMGCSS background-imageとは逆に、HTML タグを使用して画像を表示する方が適切な状況はどれですか。

要因には、アクセシビリティ、ブラウザサポート、動的コンテンツ、またはあらゆる種類の技術的な制限や使いやすさの原則が含まれます。


スペースを取るために画像が必要ですか、それとも上書きしますか?
geowa4 2009年

9
更新として、これはGoogleでかなり上位にランク付けされているため、背景画像のブラウザースケーリングと画像ストレッチが可能になり、かなり広くサポートされています(もちろん、IE8以下は例外です)。これにより、IE8以前では、このような影響をフォールバックまたは無視できます。caniuse.com/#search=background-image
Shauna

素晴らしい便利な投稿、比較のために質問を追加します。CSSの利点はホバー効果でもありますか?これはimgタグを使用して複製できますか?
ericosg 2013

私は通常、すべてのコンテンツ画像にalt属性とtitle属性の両方を追加します。これは好ましくありませんか?
HartleySan 2013年

2
また、imgはクリック可能な領域とヒントを含むマップを持つことができます
Vitim.us

回答:


797

IMGの適切な使用

  1. 他のIMG人にページ印刷してもらいたい場合や、デフォルトで画像を含めたい場合に使用します。— JayTee
  2. 警告アイコンのように、画像に意味的な意味がある場合はIMGaltテキスト付きで)使用します。これにより、スクリーンリーダーを含むすべてのユーザーエージェントで画像の意味を確実に伝えることができます。

IMGの実用的な使用

  1. IMG画像がロゴや図表、人物(実在の人物、ストックフォトの人物ではない)などのコンテンツの一部である場合は、プラスalt属性を使用します。— sanchothefat
  2. IMGテキストのサイズに比例して画像をレンダリングするためにブラウザのスケーリングに依存している場合に使用します。
  3. IE6IMG複数のオーバーレイ画像に使用します
  4. ウィンドウ全体を埋めるように背景画像を引き延ばすためにIMG、と一緒に使用します。z-index
    これはCSS3 background-sizeではもはや当てはまりません。以下の#6を参照してください。
  5. img代わりにを使用するとbackground-image、背景のアニメーションのパフォーマンスを劇的に向上させることができます。

CSS background-imageを使用する場合

  1. 画像がコンテンツの一部でない場合は、CSSの背景画像を使用します。— sanchothefat
  2. テキストの画像置換を行う場合は、CSS背景画像を使用します。段落/ヘッダー。— sanchothefat
  3. 他のbackground-image人にページ印刷してもらいたいのに、デフォルトで画像を含めたくない場合に使用します。— JayTee
  4. CSSスプライトのbackground-imageように、ダウンロード時間を改善する必要がある場合に使用します。
  5. background-imageCSSスプライトのように、画像の一部のみを表示する必要がある場合に使用します。
  6. ウィンドウ全体を埋めるように背景画像を引き延ばすためにbackground-imagewith background-size:coverを使用します。

3
テキスト置換パーツの背景画像はまだわかりません。background-imagesを使用し、次にtext-indent:-9999pxをテキストに使用している人を見かけます。しかし、私はこのようなテキストインデントがSEOに悪かったことを知っています。ただし、最も重要なのは、画像をオフにしても画像のcssを残したままにしても、テキストが画面に表示されない場合です。私に関する限り、画像のaltテキストは、画像が表示されない場合のためのものであり、imgタグの方が優れています。
Scott Reed

53
backbround画像の実用的な使用:(さまざまな垂直サイズの画像の)垂直方向のセンタリングの問題について髪を失いたくない場合;)
Frank Nocke 2013年

12
はい、垂直方向のセンタリングの問題-Flexboxを導入してください!
Dean_Wilson 2014年

3
@BinaryFunt- <div class="my-css-page-styles" style="background-image:url(blah.png);"></div>その方法でCSSスタイルシートでスタイルを設定できますが、背景画像がスタイルよりもコンテンツの問題である場合は、HTML側から編集しています。
神保ジョニー2015年

2
IMGの実用的な使用のポイント5にクリックベイトがあるようです-化粧品に関する日本のブログ投稿を指しています。リンクはwww.ajaxline.com/browsers-performance-in-dependence-of-html-codingです[これをクリックしないでください]
wick3d

292

それは私にとって白黒の決断です。画像がロゴや図表、人物(実在の人物、ストックフォトの人物ではない)などのコンテンツの一部である場合は、<img />タグとalt属性を使用します。それ以外には、CSS背景画像があります。

CSSの背景画像を使用するもう1つのタイミングは、テキストの画像置換を行うときです。段落/ヘッダー。


素晴らしいケース!CON-テキストの画像置換を行うときにbackground-imageを使用します。
システムの一時停止

2
これは公平な点ですが、テキストの画像置換(たとえば、見出し)では、スクリーンリーダーがそれを読むために「alt」を追加する必要がありますか?または、画像が表示されない場合でも、見出しが表示されますか?はい、見出しを付けてからスタイルを設定した方が良いでしょうが、確かにテキストが必要ですか?
Theo Scholiadis

4
画像置換を使用する@TheoScholiadisは、テキストの代わりに画像を使用することを意味しませんが、CSSを使用して何らかの方法でテキストを非表示にし、CSSを使用して背景として画像を提供します。文書は意味的に変更されていません。
roborourke 2012

57
個人的には「テキスト」は実際には画像なのでコピーできないのが嫌いです。私を怠け者と呼んでください、でもちょっと…
Shaz 2013

1
SEOの目的で画像が必要な場合は、alt属性を指定したimgタグを使用します。それ以外の場合は、cssを使用してバックグラウンドで画像を使用します。
スーパーモデル

107

まだ誰もこれについて言及していないことに驚いています。CSSトランジションです。

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);
}

これは、フェードするJavaScriptやjQueryのアニメーションのあらゆる種類の節約<img/>のをsrc

MDNの移行に関する詳細情報。


3
それは正当な理由ではありません。2つのオーバーレイ画像と次のCSSを持つdivを作成できます:#some_div { transition: opacity 0.5s; }#some_div:hover #top_img { opacity: 0; }
warkentien2

5
そのリンクされたMDN記事(またはw3c仕様)を読むと、background-imageはアニメート可能なプロパティの1つではなく、それを行うブラウザー(クロム)はWeb標準に従っていないことがわかります。とはいえ、そうあるべきだと思いますし、それは素晴らしい簡単な効果なので、標準の一部ではないことに失望しています。
ロバートマッキー

73

上記の回答では、デザインの側面のみを考慮しています。私はそれをSEOの側面でリストしています。

いつ使うか <img />

  1. 画像を検索エンジンインデックスに登録する必要がある場合
  2. 設計しない内容と関係がある場合。
  3. 画像が小さすぎない場合(アイコン画像ではありません)。
  4. 追加altおよびtitle属性付けできる画像。
  5. 印刷メディアCSSを使用して印刷するWebページの画像

CSSを使用する場合 background-image

  1. 純粋に設計に使用された画像。
  2. コンテンツとは関係ありません。
  3. CSS3で再生できる小さな画像。
  4. 画像の繰り返し(ブログの作者のアイコンでは、日付のアイコンは各記事などで繰り返されます)。

これらの理由に基づいて使用します。これらは、画像の検索エンジン最適化の推奨事項です。


54

ブラウザは、デフォルトで常に背景画像を印刷するように設定されているわけではありません。人々にあなたのページを印刷してもらうつもりなら:)


9
次のように聞こえます。PRO-画像をデフォルトで印刷する場合はIMGを使用します。CON-デフォルトでイメージを印刷しない場合は、background-imageを使用します。良いですね!
システムの一時停止

7
アイデアは、画像を非表示にするか、より適切なものに変更する、印刷専用のCSSスタイルを個別に用意することだと思います。
Blazemonger 2014年

52

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;
}

それ以外の場合は、すべてのHTMLファイルのsrc適切な<img>タグの属性を更新する必要があります(プロセスを自動化するためにサーバー側スクリプト言語またはCMSを使用していない場合)。

また、ユーザーが画像を保存できないようにしたい場合は、背景画像が役立ちます(ただし、これを行う必要はありませんでした)。


14
背景画像は確かに、画像を右クリックするのと同じくらい簡単ではない、最小限のビューソーススペルで保存できます。
Michael

2
Firefox。右クリック。「背景画像を見る」。それほど難しいことではありません。
TRiG 2013年

1
@TRiG透明なオーバーレイまたはページ固有のコンテキストメニューの変更がない限り、そうすることはできません。私は以前にそれを見たことがあります、そして私の意見では、あなたがソースで探索する必要さえないので、それはかなりばかげています、ページが完全にロードされていれば、Firefoxで少なくともTools> Page Info / alt + t i /右クリックして[ページ情報の表示]を選択し、[メディア]セクションを参照して、リストから必要なすべてのアイテムを保存します。もちろん、画像をFlashファイルに埋め込んだり、その他の奇妙なトリックを実行したりするなど、それを防ぐ方法はいくつかありますが、それらをバイパスしたり、説明したりすることもできます。
JAB

ユーザーが画像を保存することを拒否された場合、背景のテクニックはあまり良くないと思います...
ncubica 2013

45

sanchothefatの回答とほぼ同じですが、側面が異なります。私は常に自分自身に問いかけます。スタイルシートをWebサイトから完全に削除する場合、残りの要素はコンテンツにのみ属しますか?もしそうなら、私はうまく仕事をしました。


42

いくつかの答えは、ここでシナリオを複雑にしています。これは非常に単純な状況です。

画像を配置するたびに、この質問に答えてください。

これはコンテンツの一部ですか、デザインの一部ですか?

これに答えられない場合は、おそらく何をしているのか、何をしたいのかわからないでしょう!

また、「プリンタに優しい」かどうかにかかわらず、2つの手法の横にあることを考慮しないでください。また、CSSを使用してSEOの観点からコンテンツを非表示にしないでください。CSSファイルでコンテンツを管理していることに気付いた場合は、脚を撃ちました。これは、コンテンツであるかどうかのささいな決定です。他のすべての側面は無視する必要があります。


私はこの答えが好きです。それは非常に明確です。プリンタ対応やSEOなどの残りの問題は、各シナリオで個別に検討する必要があります。
Juan Herrera 2016年

28

さらに2つの引数を追加します。

  • IMGのあなたがする必要がある場合はタグが良いですリサイズした画像を。たとえば、元の画像が100x100ピクセルで、80x80ピクセルにしたい場合は、imgタグのCSSの幅と高さを設定できます。background-imageを使用してこれを行う良い方法は知りません。編集:これは、background-sizeCSS3属性を使用して、背景画像でも実行できるようになりました。

  • スプライトを動的に切り替える必要がある場合は、background-imageの使用が適しています。たとえば、ボタン画像があり、カーソルを要素の上に置いたときに別の画像を表示したい場合は、通常のスプライトとホバースプライトの両方を含む背景画像を使用して、背景の位置を動的に変更できます。


2
これは本当に良い答えです。特にサイズ変更ポイントです。バックグラウンドサイズを使用できると人々は主張しますが、古いブラウザをサポートしようとしている場合、それが必ずしも最善の方法であるとは限りません。
dudewad 2015

1
これがCSSで行われる方法ですbackground-size: 80px 80px;
カリーム

2
@Kareem、ありがとうございます。これはCSS3で導入されたと思いますが、最初に回答したときはまだ存在していませんでした。私はこれを反映するように私の回答を編集しました。
Anders Rabo Thorbeck

写真のサイズ変更は、ピクセル化や補間の点で注意が必要です。可能であれば、画像をフォトイメージングソフトウェアに取り込み、品質を損なうことなく適切にサイズを変更することなく、サイズを40%を超えて変更することはありません(20%が標準です)。割り当てられたピクセルの量を拡大して埋めるのに十分な情報がない場合、DPI品質はここで重要になります。
デイルランドリー、2017年

18

<IMG>タグの使用によるもう1つの利点はSEOに関連しています。つまり、画像に関する追加情報を画像タグのALT属性で提供できますが、CSSを介して画像を指定するときにそのような情報を提供する方法はありません。検索エンジンがインデックスを作成できるのは、画像ファイル名のみです。ALT属性は、CSSアプローチよりも確実に<IMG>タグSEOの利点を提供します。それが、私によると、<IMG>タグを使用して、画像検索結果(Google画像検索など)でランク付けしたい画像を指定する方が良い理由です。


background-images ALT値はサイトマップで定義できます。google.com/schemas/sitemap-image/1.1
カリーム

17

フォアグラウンド= img。

背景= CSSの背景。


5
もちろん、「メニュー」ボタンの横にある小さな下矢印インジケーターやその他の要素についてはどうでしょう。その前景と背景をどのように分類しますか?
dudewad 2015

@dudewadフォアグラウンドと言います。なぜなら、それらは(視覚的に)ページの「トップ」レイヤーにあり、他の要素に重ね合わされているからです。
jkdev '18年

14

背景画像は、タイル状の画像を含むコンテナなど、必要な場合にのみ使用してください。

IMAGESを使用することによる主要なPROSの1つは、SEOに適していることです。


3
おそらく、alt属性を使用できるためです。
David

4
それはあなたがその特定の画像のためにSEOが欲しいかどうかに依存しませんか?コンテンツではなく、ページのスタイルの一部である画像(たとえば、連絡先ページのメールアイコン)にSEOを適用する理由がわかりません。ですから、実際には、私はむしろあなたの発言を好転させたいと思います。必要な場合にのみIMAGESを使用します(コンテンツ関連、印刷関連、SEO関連)。
Volzy

12

背景画像を使用して、寸法を完全に指定する必要があります。実際にそれらを事前に知らないか、またはそれらを決定できない場合、これは重大な問題になる可能性があります。

の大きな問題<img />はオーバーレイです。画像(box-shadow:inset 0 0 5px rgb(0,0,0,.5))にCSSの内側のシャドウが必要な場合はどうすればよいですか?この場合、<img />子要素を持つことはできないので、配置を使用して空の要素を追加する必要があります。これは、役に立たないマークアップに相当します。

結論として、それはかなり状況的なものです。


11

background-image使用する必要がある他のいくつかのシナリオ:

  • マウスを上に置いたときに画像を変更する場合。
  • 画像に角を丸くしたい場合。を使用imgすると、丸みを帯びた角から画像が漏れます。

あなたは実際に行うことができます:img { border-radius: 10px; }
ラフ14

@RafcioKowalskyあなたは正しいです。うまくいかなかった正確な状態を思い出せborder-radiusません。
Behrang Saeedzadeh 2014

10

デザインの複数のスキンまたはバージョンの場合は、CSS background-imageを使用します。JavaScriptを使用して、要素のクラスを動的に変更できます。これにより、別の画像を強制的にレンダリングします。IMGタグを使用すると、よりトリッキーになる場合があります。


クラスを変更するのと同じくらい簡単に、イメージタグのsrc属性を動的に変更することもできます
roborourke

3
@ sanchothefat、true、ただし、この場合、画像ソースはCSSではなくJSで保持する必要があります。ファイル名を保持するには、IMO cssファイルの方が適切です。
MK_Dev 2009

7

これは技術的な考慮事項です:画像は動的に生成されますか?<img>CSSプロパティを動的に編集するよりも、HTMLでタグを生成する方がはるかに簡単です。


1
そしてインラインスタイルはどうですか?この質問は、この考えによって本当に決定されてはなりません。
viam0Zah 2009

多分私はこのように言い表すべきです:あなたはむしろDOM要素または要素属性で作業しますか?
ブライアンM.

おそらく'09年にはbaclを検討する価値がありますが、jQueryではこれはほとんど問題になりません。要素を切り替えるよりも、要素のcssまたはクラスを切り替える方が簡単で流動的です。
dfherr

7

画像のサイズはどうですか?imgタグを使用すると、ブラウザが画像を拡大縮小します。css backgroundを使用すると、ブラウザは大きな画像からチャンクを切り取ります。


7

CSS TranslateX / Y(htmlをアニメーション化する適切な方法)を使用して画像をアニメーション化することについて-アニメーション化されているCSSの背景画像とアニメーション化されているIMGタグをChromeタイムラインで記録すると、CSSのペイント時間が大幅に短縮されます。背景画像。


7

別の理由があります!レスポンシブデザインがあり、デバイスの低解像度、中解像度、高解像度の画像の使用をメディアクエリで分割する場合は、背景も使用する必要があります。


1
maarten、tercheling is Pipeable Vincent willemsから聞いた。それでは、PyMolでどのように機能すると思いますか
Mehdi Nellen 2014

1
ドキュメントを参照してくださいそれはどのようにされてpipeable pieterpeitshoeve.nl/rondleiding
マールテン

@マールティーン、これはhtml 5の画像とソースタグを使用して実行できると思います
Tick20

6

また、ギャラリーセクションで画像のサイズに一貫性がないため、これらの画像は明らかにコンテンツと見なされますが、背景画像を使用して、設定されたサイズのdivの中央に配置します。これはFacebookがアルバムで行うことと似ています。


6

imgは理由によりhtmlタグなので、使用する必要があります。物を参照したり説明したりするために、人々は例:記事の中。

また、画像に意味があるか、クリック可能にする必要がある場合、imgcss背景よりも優れています。他のすべての状況では、CSSバックグラウンドを使用できると思います。

しかし、それは何度も何度も議論する必要がある主題です。

フランス、パリ出身のWeb学生


5

追加する小さなものだけですが、ユーザーが「右クリック」して「画像を保存」/「画像を保存」できるようにする場合は、imgタグを使用する必要があります。そのため、画像をその他。

背景画像を使用すると(ほとんどのブラウザで私が知っている限り)、画像を直接保存するオプションが無効になります。


5

小さな入力ですが、小さな画像でも、iphoneでのレンダリングが最大1分間遅くなるレスポンシブな画像で問題が発生しました。

<!-- Was super slow -->
<div class="stuff">
    <img src=".." width="100%" />
</div>

しかし、背景画像を使用するように切り替えると、問題はなくなりました。これは、新しいブラウザーをターゲットにしている場合にのみ実行可能です。


この動作に対するサポートや説明はありますか?
トッド

申し訳ありませんが、ページがクロールする速度が遅くなる理由がわかりません。おそらく、iPhoneのブラウザでのリフローでリソースがほとんどない可能性があります。
ウィンザーズ2014年

4

IMGが最初にロードされるのsrcは、それがhtmlファイル自体にあるのに対しbackground-image、ソースの場合はスタイルシートで言及されているため、スタイルシートがロードされた後に画像がロードされ、Webページのロードが遅延するためです。


さらに、一部のブラウザー(Firefox 35など)はbackground-image、しばらくするとCSSを更新するように見えます。複数のタブを開いている場合、しばらくしてからCSSの背景が空白になるまでタブに戻ると、
Skippy le Grand Gourou 2015

3

HTMLはコンテンツ用で、CSSはデザイン用です。画像は必要ですか?スクリーンリーダーで拾う必要がありますか?答えが「はい」の場合、画像をHTMLに入れます。純粋にスタイル設定の場合は、CSSのbackground-imageプロパティを使用して画像を挿入できます。ここで多くの人がすでに述べたように、必要に応じて画像に疑似要素を使用できます。


3

また、ほとんどの検索エンジンスパイダーはCSS背景画像をインデックスに登録しないため、背景画像は無視され、検索エンジンからトラフィックを取得できなくなります(SEOのメリットはありません)。

タグで定義されたすべての画像はインデックスに登録され(手動で除外されない限り)、タイトル/代替属性とファイル名が適切に最適化されている場合(キーワードを記述)、検索エンジンからトラフィックを取り込むことができます。


2

画像を滑らかにし、さまざまな画面サイズに拡大縮小する場合は、IMGタグを使用できます。私にとって、これらの画像はほとんどコンテンツの一部です。コンテンツの一部ではないほとんどの要素では、CSSスプライトを使用して、アイコンなどを実際にアニメーション化したくない限り、ダウンロードサイズを最小限に抑えます。


2

ほとんどのブラウザーでサポートされている100%ストレッチ可能なものにしたい場合は、background-imageではなくimageを使用します。


2

ページの特別なコンテンツまたは1ページのみの画像を追加する場合はIMGタグを使用し、複数のページに画像を配置する場合はCSS背景画像を使用する必要があります。


2

別の背景画像PRO:<ul>/ <ol>リストの背景画像。

全体的なデザインの一部であり、複数のページで繰り返される場合は、背景画像を使用します。最適化のために、バックグラウンドのスプライト形式が望ましい。

全体的なデザインの一部ではなく、1回だけ配置される可能性が高いすべての画像にタグを使用しますたとえば、記事の特定の画像、人物、Google画像に追加するに値する重要な画像などです。

**私が<img>タグで囲む唯一の繰り返し画像は、サイト/会社のロゴです。人々はそれをクリックしてホームページに移動する傾向があるため、<a>タグでラップします。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.