Bir div'i doldurmak için arka plan resmi nasıl uzatılır


102

Farklı div'lere bir arka plan resmi ayarlamak istiyorum, ancak sorunlarım:

  1. Görüntünün boyutu sabittir (60px).
  2. Değişken div boyutu

Arka plan resmini div'in tüm arka planını dolduracak şekilde nasıl uzatabilirim?

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

Kodu buradan kontrol edin.

Yanıtlar:


154

Ekle

background-size:100% 100%;

arka plan resminin altında css'inize.

Tam boyutları da belirtebilirsiniz, yani:

background-size: 30px 40px;

Burada: JSFiddle


5
IE bunu desteklemiyor. Ne yapmalı?
KarSho

9
işe yaramıyor, daha iyi bir cevap için aşağıya bakın: arka plan boyutu:% 100% 100;
chriscatfr

Görüntüyü konteynere sığacak şekilde uzatmak
SearchForKnowledge

background-repeat: no-repeat;
Eklemeniz

1
hendo, JSFiddle artık çalışmıyor (hootsuite için ölü bağlantılar), lütfen günceller misiniz?
TylerH

71

Kullanabilirsiniz:

background-size: cover;

Veya şunlarla büyük bir arka plan resmi kullanın:

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

3
kapak
esnemiyor,

Arka plan resminizle ne yapmaya çalıştığınızı bilmiyorum ama resmi background-size: cover; background-position: centerdiv
uzatmadan

1
Germenin görüntüyü bozacağı resimler için harika çalışıyor!
Stijn Van Bael

45

Modern CSS3 (gelecek için önerilir ve muhtemelen en iyi çözüm)

.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. */
}

Maks. Alan sayısı Kırpma veya deformasyon olmadan gerin (arka planı doldurmayabilir) : background-size: contain;
Mutlak germeyi zorlayın (deformasyona neden olabilir, ancak kırpma olmaz) : background-size: 100% 100%;

"Eski" CSS "her zaman çalışır" şekilde

Ebeveynin (göreceli olarak konumlandırılmış) ilk alt öğesi olarak mutlak konumlandırma görüntüsü ve ebeveyn boyutuna genişletme.

HTML

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

CSS3'ün Eşdeğeri background-size: cover;:

Bunu dinamik olarak başarmak için , içerme yöntemi alternatifinin tersini kullanmanız gerekir (aşağıya bakın) ve kırpılan görüntüyü ortalamanız gerekirse, bunu dinamik olarak yapmak için bir JavaScript'e ihtiyacınız olacaktır - örneğin, jQuery kullanarak:

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

Pratik örnek:
örnek gibi css kırp

CSS3'ün Eşdeğeri background-size: contain;:

Bu biraz yanıltıcı olabilir - arka planınızın, üst öğenin taşmasına neden olan boyutu, CSS'yi% 100'e, diğerini otomatik olarak ayarlayacaktır. Pratik örnek: css arka planı resim olarak germe

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

CSS3'ün Eşdeğeri background-size: 100% 100%;:

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

Not: Kapak / kapsam eşdeğerlerini tamamen dinamik bir şekilde "eski" şekilde yapmak için (böylece taşmalar / oranlarla ilgilenmek zorunda kalmazsınız) sizin için oranları tespit etmek için javascript kullanmanız ve boyutları açıklandığı gibi ayarlamanız gerekir. ..


2
Diğer "Kapak" cevabından çok daha eksiksiz bir cevap. Ne yazık ki, aşağıya yakın bir yerde sıkışmış durumda ...
BillyNair

24

Bunun için CSS3 background-sizeözelliğini kullanabilirsiniz . Şöyle yazın:

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

Şunu kontrol edin: http://jsfiddle.net/qdzaw/1/


1
IE bunu desteklemiyor. Ne yapmalı?
KarSho

4
IE için IMG etiketini kullanın , yüksekliği ve genişliği% 100 olan mutlak konumu verin.
sandeep

20

Ekleyebilirsin:

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

Buradan daha fazla bilgi edinebilirsiniz: css3 arka plan boyutu


3
Kabul edilen cevaptan çok daha iyi, çünkü bu size arka plan boyutunun genişlik ve yükseklik için 2 değer kabul ettiğini gösterir .
krb686

arka plan boyutu bir
css3'tür

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


1

Kullanım: arka plan boyutu:% 100% 100; Arka plan resmini div boyutuna sığdırmak için.


Bu benim aradığım şeydi - orijinalin en boy oranına bakılmaksızın sığması için uzat. Teşekkürler.
dgig

0

En boy oranını korumak için kullanın background-size: 100% auto;

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

0

Bunun gibi bir şey dene:

div {
    background-image: url(../img/picture1.jpg);
    height: 30em;
    background-repeat: no-repeat;
    width: 100%;
    background-position: center;
}
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.