Ik wil een achtergrondafbeelding instellen voor verschillende divs, maar mijn problemen zijn:
- De grootte van de afbeelding is vast (60px).
- 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;
}
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-size
eigenschap 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;
}