背景画像を拡大してdivを満たす方法


102

背景画像を別のdivに設定したいのですが、私の問題は次のとおりです。

  1. 画像サイズは固定(60px)です。
  2. さまざまなdivのサイズ

divの背景全体を埋めるように背景画像を拡大するにはどうすればよいですか?

#div2{
  background-image:url(http://s7.static.hootsuite.com/3-0-48/images/themes/classic/streams/message-gradient.png);
  height:180px;
  width:200px;
  border: 1px solid red;
}

ここでコードを確認してください。

回答:


154

追加

background-size:100% 100%;

あなたのCSSにbackground-imageの下に。

正確な寸法を指定することもできます。

background-size: 30px 40px;

ここ:JSFiddle


5
IEはこれをサポートしていません。どうする?
KarSho 2013年

9
それは機能しません、より良い答えは以下を参照してください:background-size:100%100%;
chriscatfr 2014年

なぜコンテナーに合わせて画像を引き伸ばすのではなく乗算するのですか:jsfiddle.net/qdzaw/424
SearchForKnowledge

追加する必要がありますbackground-repeat: no-repeat;
Rorrik

1
hendo、あなたのJSFiddleはもう機能していません(hootsuiteへのデッドリンク)。更新していただけますか?
TylerH 2015

71

以下を使用できます。

background-size: cover;

または、次のように大きな背景画像を使用します。

background: url('../images/teaser.jpg') no-repeat center #eee;

3
カバーはストレッチしません、それは絵を切ることができます
drdrej

背景imgで何をしようとしているのかわかりませんが、画像を引き伸ばさずにbackground-size: cover; background-position: center背景を塗りつぶしdivます
Ouadie

1
ストレッチによって画像が変形する写真に最適です。
Stijn Van Bael 2017

45

最新のCSS3(将来に推奨され、おそらく最高のソリューション)

.selector{
   background-size: cover;
   /* stretches background WITHOUT deformation so it would fill the background space,
      it may crop the image if the image's dimensions are in different ratio,
      than the element dimensions. */
}

マックス。クロップも変形もなしで ストレッチ背景を埋められない場合があります)background-size: contain;
絶対ストレッチを強制します(変形を引き起こす可能性がありますが、クロップはありません) background-size: 100% 100%;

「古い」CSS「常に機能する」方法

(相対的に配置された)親の最初の子としての画像の絶対配置と親サイズへの拡大。

HTML

<div class="selector">
   <img src="path.extension" alt="alt text">
   <!-- some other content -->
</div>

CSS3に相当background-size: cover;

これを動的に実現するには、containメソッド反対の方法(以下を参照)を使用する必要があり、トリミングされた画像を中央に配置する必要がある場合は、JavaScriptを使用して動的に行う必要があります(jQueryを使用するなど)。

$('.selector img').each(function(){ 
   $(this).css({ 
      "left": "50%", 
      "margin-left": "-"+( $(this).width()/2 )+"px", 
      "top": "50%", 
      "margin-top": "-"+( $(this).height()/2 )+"px" 
   }); 
});

実用的な例:
例のようなCSS作物

CSS3に相当background-size: contain;

これは少しトリッキーになる可能性があります-親をオーバーフローする背景の寸法はCSSを100%に設定し、もう一方は自動に設定します。 実用的な例: 画像として背景を伸ばすCSS

.selector img{
   position: absolute; top:0; left: 0;
   width: 100%;
   height: auto;
   /* -- OR -- */
   /* width: auto; 
      height: 100%; */
}

CSS3に相当background-size: 100% 100%;

.selector img{
   position: absolute; top:0; left: 0;
   width: 100%;
   height: 100%;
}

PS:「古い」方法で完全に動的にカバー/封じ込めを行うには(オーバーフロー/比率を気にする必要がないため)、JavaScriptを使用して比率を検出し、説明どおりに寸法を設定する必要があります。 ..


2
他の「カバー」回答よりもはるかに完全な回答。残念ながら、それはここの底近くで
止まってい

24

これには、CSS3 background-sizeプロパティを使用できます。このように書きます:

#div2{
    background-image:url(http://s7.static.hootsuite.com/3-0-48/images/themes/classic/streams/message-gradient.png);
    -moz-background-size:100% 100%;
    -webkit-background-size:100% 100%;
    background-size:100% 100%;
    height:180px;
    width:200px;
    border: 1px solid red;
}

これを確認してください:http : //jsfiddle.net/qdzaw/1/


1
IEはこれをサポートしていません。どうする?
KarSho 2013年

4
IEではIMGタグを使用して、高さと幅を100%にして絶対位置を指定します。
Sandeep 2013年

20

あなたは付け加えられます:

#div2{
    background-image:url(http://s7.static.hootsuite.com/3-0-48/images/themes/classic/streams/message-gradient.png);
    background-size: 100% 100%;
    height:180px;
    width:200px;
    border: 1px solid red;
}

詳しくは、css3 background-sizeをご覧ください。


3
これは、background-sizeが幅と高さの2つの値を受け入れることを示しているため、受け入れられた回答よりもはるかに優れています。
krb686 2013

background-sizeはcss3であり、すべてのブラウザーでサポートされているわけではありません
Mahdi Jazini '24


1

プロパティcssを使用して:

background-size: cover;

background-sizeはcss3であり、すべてのブラウザでサポートされているわけではありません
Mahdi Jazini '24

1

使用:background-size:100%100%; 背景画像をdivサイズに合わせるため。


これは私が探していたものです-オリジナルのアスペクト比に関係なくフィットするようにストレッチします。ありがとう。
dgig '19

0

アスペクト比を維持するには、 background-size: 100% auto;

div {
    background-image: url('image.jpg');
    background-size: 100% auto;
    width: 150px;
    height: 300px;
}

0

次のようなものを試してください:

div {
    background-image: url(../img/picture1.jpg);
    height: 30em;
    background-repeat: no-repeat;
    width: 100%;
    background-position: center;
}
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.