web-dev-qa-db-ja.com

divを埋めるために背景画像を引き伸ばす方法

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

  1. 画像サイズは固定(60px)です。
  2. Divのサイズが変わります

Divの背景全体を埋めるようにbackground-imageを引き伸ばすにはどうすればいいですか?

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

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

92
Muhammad Usman

追加する

background-size:100% 100%;

背景画像の下にあなたのCSSに。

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

background-size: 30px 40px;

ここで JSFiddle

128
hendos43

あなたが使用することができます:

background-size: cover;

または単に大きな背景画像を使用します。

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

モダン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;に相当します。

これを動的に実現するには、containsメソッドの代わり(下記参照)を使用する必要があります。トリミングした画像を中央に配置する必要がある場合は、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 crop like example

CSS3のbackground-size: contain;に相当します。

これは少しトリッキーかもしれません - 親をオーバーフローさせるあなたの背景の寸法は100%に設定されたCSSを持っているでしょう他のものを自動にするでしょう。 実用例 css stretching background as image

.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:cover/containsと同等のことを "昔の"方法で完全に動的に行うため(オーバーフロー/比率を気にする必要はありません)、比率を検出するにはjavascriptを使用する必要があります。あなたのために、説明されているように寸法を設定してください...

41
jave.web

これには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/

24
sandeep

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

#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

20
Xella
body{
  margin:0;
  background:url('image.png') no-repeat 50% 50% fixed;
  background-size: cover;
}
2
Kursat Turkay

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

background-size: cover;
1
MrBii

使用:背景サイズ:100%100%。背景画像をdivサイズに合わせて作成します。

1
jagan reddy

縦横比を維持するには、background-size: 100% auto;を使用します。

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

このようなことを試してください:

div {
    background-image: url(../img/picture1.jpg);
    height: 30em;
    background-repeat: no-repeat;
    width: 100%;
    background-position: center;
}
0
Deejay