Hoe de achtergrondafbeelding uitrekken om een ​​div te vullen

Ik wil een achtergrondafbeelding instellen voor verschillende divs, maar mijn problemen zijn:

  1. De grootte van de afbeelding is vast (60px).
  2. Verschillende grootte van div

Hoe kan ik de achtergrondafbeelding uitrekken om de hele achtergrond van de div te vullen?

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

Controleer de code hier.


Antwoord 1, autoriteit 100%

Toevoegen

background-size:100% 100%;

naar je css onder de achtergrondafbeelding.

U kunt ook exacte afmetingen opgeven, d.w.z.:

background-size: 30px 40px;

Hier: JSFiddle


Antwoord 2, autoriteit 44%

U kunt gebruiken:

background-size: cover;

Of gebruik gewoon een grote achtergrondafbeelding met:

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

Antwoord 3, autoriteit 28%

Moderne CSS3 (aanbevolen voor de toekomst en waarschijnlijk de beste oplossing)

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

Max. uitrekken zonder bijsnijden of vervorming (mag de achtergrond niet vullen):background-size: contain;

Absolute rek forceren (kan vervorming veroorzaken, maar geen uitsnede):background-size: 100% 100%;

“Oude” CSS “altijd werkende” manier

Afbeelding absoluut positioneren als een eerste kind van de (relatief gepositioneerde)ouder en deze uitrekken tot de grootte van de ouder.

HTML

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

Equivalent van CSS3 background-size: cover;:

Om dit dynamisch te bereiken, moet u het tegenovergestelde van de methode alternatief bevattengebruiken (zie hieronder) en als u de bijgesneden afbeelding moet centreren, heeft u een JavaScript nodig om dat dynamisch te doen – bijv jQuery gebruiken:

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

Praktisch voorbeeld:

Equivalent van CSS3 background-size: contain;:

Deze kan een beetje lastig zijn – de dimensie van je achtergrond die de ouder zou overlopen, heeft CSS ingesteld op 100% en de andere op automatisch.
Praktisch voorbeeld:

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

Equivalent van CSS3 background-size: 100% 100%;:

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

PS: Om de equivalenten van cover/contain op de “oude” manier volledig dynamisch te doen (zodat u zich geen zorgen hoeft te maken over overflows/ratio’s), zou u javascript moeten gebruiken om de verhoudingen voor u te detecteren en stel de afmetingen in zoals beschreven…


Antwoord 4, autoriteit 13%

Hiervoor kunt u de CSS3 background-sizeeigenschap gebruiken. Schrijf als volgt:

#div2{
    background-image:url(https://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;
}

Controleer dit: http://jsfiddle.net/qdzaw/1/


Antwoord 5, autoriteit 11%

Je kunt toevoegen:

#div2{
    background-image:url(https://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;
}

Je kunt er hier meer over lezen: css3 achtergrondformaat


Antwoord 6

door eigenschap css te gebruiken:

background-size: cover;

Antwoord 7

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

Antwoord 8

Gebruik:
achtergrondgrootte: 100% 100%;
Om de achtergrondafbeelding aan te passen aan de div-grootte.


Antwoord 9

Om de beeldverhouding te behouden, gebruik background-size: 100% auto;

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

Antwoord 10

Probeer zoiets als dit:

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

Other episodes